2015-10-10 88 views
0

因此,我使用的是Virtuoso SPARQL端點,並且我正在使用Jena來查詢它。我用QueryFactoryQueryExecution創建SPARQL查詢:SPARQL查詢在Virtuoso服務上使用Jena的執行時間

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(),但我不確定這是否是正確的方法。任何指針如何我可以找到執行時間,將不勝感激!

回答

1

結果以流形式返回,因此時間需要從qexec.execSelect()之前的時間跨到應用程序完成處理結果之後,而不僅僅是調用execSelect

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

非常感謝您的回覆@AndyS。現在我正在使用它,但是,有沒有其他方法可以找出在Virtuoso上運行查詢需要多長時間?即Virtuoso需要多長時間?無論如何,這是有幫助的! – N00bsie

1

你是否想不想來一次完整的往返,或者只是炫技的東西上花費的時間目前還不清楚......

炫技7讓你得到彙編(查詢計劃)和執行時間查詢使用the profile function

您還可以使用the prof_enable function啓用常規查詢日誌記錄和分析。

+0

非常感謝@TallTed。顯然,我只是想弄清楚Virtuoso需要多長時間。我需要的是一個簡單而簡單的API調用系統來查找查詢執行時間。需求源於運行多個類似的查詢來查找執行時間的變化。我想沒有辦法使用JENA或rdflib來完成它。我只知道使用Virtuoso的配置文件功能。謝謝你的提示! – N00bsie