所以我使用的是Virtuoso SPARQL端点,我正在使用Jena来查询它。我使用QueryFactory
和QueryExecution
来创建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()
,但我不确定这是否是正确的方法。关于如何找到执行时间的任何指示都将不胜感激!
答案 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启用常规查询记录和分析。