apollo-compiler 1.32.0

A compiler for the GraphQL query language.
Documentation
use apollo_compiler::ast::Document;
use apollo_compiler::ExecutableDocument;
use apollo_compiler::Schema;
use criterion::*;

fn parse_ast(schema: &str, query: &str) {
    let schema = Document::parse(schema, "schema.graphql").unwrap();
    let doc = Document::parse(query, "query.graphql").unwrap();
    std::hint::black_box((schema, doc));
}

fn parse_and_validate(schema: &str, query: &str) {
    let schema = Schema::parse_and_validate(schema, "schema.graphql").unwrap();
    let doc = ExecutableDocument::parse_and_validate(&schema, query, "query.graphql").unwrap();
    std::hint::black_box((schema, doc));
}

fn bench_simple_query(c: &mut Criterion) {
    let query = include_str!("testdata/simple_query.graphql");
    let schema = include_str!("testdata/simple_schema.graphql");

    c.bench_function("simple_query parse_ast", move |b| {
        b.iter(|| parse_ast(schema, query))
    });
    c.bench_function("simple_query parse_and_validate", move |b| {
        b.iter(|| parse_and_validate(schema, query))
    });
}

fn bench_supergraph(c: &mut Criterion) {
    let schema = include_str!("testdata/supergraph.graphql");
    let query = include_str!("testdata/supergraph_query.graphql");

    c.bench_function("supergraph parse_ast", move |b| {
        b.iter(|| parse_ast(schema, query))
    });
    c.bench_function("supergraph parse_and_validate", move |b| {
        b.iter(|| parse_and_validate(schema, query))
    });
}

criterion_group!(benches, bench_supergraph, bench_simple_query);
criterion_main!(benches);