SPARQL查询在Virtuoso服务上使用Jena的执行时间

时间:2015-10-10 21:43:45

标签: java sparql jena execution-time virtuoso

所以我使用的是Virtuoso SPARQL端点,我正在使用Jena来查询它。我使用QueryFactoryQueryExecution来创建SPARQL查询:

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

现在我想计算运行此查询所需的时间。如何在Virtuoso上使用Jena找到这样的时间?那可能吗?显然,我确实关注过getTimeOut1()getTimeOut2()等函数。他们似乎没有给我任何好的方向。作为一个黑客,我尝试使用Java内置的System.currentTimeMillis(),但我不确定这是否是正确的方法。关于如何找到执行时间的任何指示都将不胜感激!

2 个答案:

答案 0 :(得分:1)

结果以流形式返回,因此时间需要从qexec.execSelect()之前到应用程序完成处理结果之后,而不仅仅是调用execSelect

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

答案 1 :(得分:1)

目前尚不清楚您是想要完整的往返时间,还是只是Virtuoso花在事情上的时间......

Virtuoso 7允许您使用the profile function获取查询的编译(查询计划)和执行时间。

您还可以使用the prof_enable function启用常规查询记录和分析。