简体   繁体   中英

SPARQL Query Execution time using Jena on a Virtuoso service

So I am using a Virtuoso SPARQL endpoint and I am using Jena to query it. I use QueryFactory and QueryExecution to create a SPARQL query :

    Query query = QueryFactory.create(sparqlQueryString1);
    QueryExecution qexec = QueryExecutionFactory.sparqlService("http://localhost:8890/sparql", query);
    ResultSet results = qexec.execSelect();

Now I want to calculate the time taken to run this query. How does one find such a time using Jena on Virtuoso? Is that possible? Obviously I did look at functions like getTimeOut1() and getTimeOut2() . They don't seem to be giving me any good direction. As a hack I tried using Java's inbuilt System.currentTimeMillis() , However I am not sure if that is the right way. Any pointers as to how I can find execution time would be appreciated!

Results come back as a stream so the timing needs to span from just before qexec.execSelect() to just after the app finished handling the results, not just call execSelect .

Timer timer = new Timer() ;
timer.startTimer() ;
ResultSet results = qexec.execSelect();
ResultSetFormatter.consume(results) ;
long x = timer.finishTimer() ;   // Time in milliseconds.

It's not clear whether you want to time the full round-trip, or just the time Virtuoso spends on things...

Virtuoso 7 lets you get the compilation (query plan) and execution time of a query using the profile function .

You can also enable general query logging and profiling using the prof_enable function .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM