use test::Bencher; use std::collections::{HashMap}; use schema::model::RootNode; use tests::model::Database; #[bench] fn query_type_name(b: &mut Bencher) { let database = Database::new(); let schema = RootNode::new(&database, ()); let doc = r#" query IntrospectionQueryTypeQuery { __schema { queryType { name } } }"#; b.iter(|| ::execute(doc, None, &schema, &HashMap::new(), &database)); } #[bench] fn introspection_query(b: &mut Bencher) { let database = Database::new(); let schema = RootNode::new(&database, ()); let doc = r#" query IntrospectionQuery { __schema { queryType { name } mutationType { name } subscriptionType { name } types { ...FullType } directives { name description locations args { ...InputValue } } } } fragment FullType on __Type { kind name description fields(includeDeprecated: true) { name description args { ...InputValue } type { ...TypeRef } isDeprecated deprecationReason } inputFields { ...InputValue } interfaces { ...TypeRef } enumValues(includeDeprecated: true) { name description isDeprecated deprecationReason } possibleTypes { ...TypeRef } } fragment InputValue on __InputValue { name description type { ...TypeRef } defaultValue } fragment TypeRef on __Type { kind name ofType { kind name ofType { kind name ofType { kind name ofType { kind name ofType { kind name ofType { kind name ofType { kind name } } } } } } } } "#; b.iter(|| ::execute(doc, None, &schema, &HashMap::new(), &database)); }