use criterion::{criterion_group, criterion_main, Criterion}; use oxigraph::sparql::*; use oxigraph_testsuite::files::read_file_to_string; use oxigraph_testsuite::manifest::TestManifest; criterion_group!(sparql, sparql_w3c_syntax_bench); criterion_main!(sparql); fn sparql_w3c_syntax_bench(c: &mut Criterion) { let manifest_urls = vec![ "https://w3c.github.io/rdf-tests/sparql/sparql10/manifest-syntax.ttl", "https://w3c.github.io/rdf-tests/sparql/sparql11/manifest-sparql11-query.ttl", ]; let queries: Vec<_> = TestManifest::new(manifest_urls) .flat_map(|test| { let test = test.unwrap(); if test.kind == "http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#PositiveSyntaxTest" || test.kind == "http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#PositiveSyntaxTest11" { test.action.map(|query| (read_file_to_string(&query).unwrap(), query)) } else { None } }) .collect(); c.bench_function("query parser", |b| { b.iter(|| { for (query, base) in &queries { Query::parse(query, Some(base)).unwrap(); } }) }); }