所以我在Jena中有这段代码,用于衡量选择查询的执行时间
Timer timer = new Timer();
timer.startTimer();
Query query = QueryFactory.create(queryString);
QueryExecution qexec = QueryExecutionFactory.create(query,dataset);
ResultSet results = qexec.execSelect();
long endTime = timer.endTimer();
现在问题是这个变量endTime
显示的运行时间结果小于查询执行时间应该的结果。 dataset
是Jena TDB的位置。
为了测试这一点,我在同一个TDB商店使用Apache Jena的Fuseki运行相同的查询,我发现执行时间不同(可能是实际执行时间)。使用Jena查找执行时间的正确方法是什么。我不想使用Fuseki执行所有操作并找到答案。
答案 0 :(得分:1)
QueryExecutionFactory.create(query,dataset);
所有这一切都是创建一个可以执行查询的执行,重要的是不执行您的查询。
要开始执行,您需要调用execX()
方法之一,这取决于查询类型,例如execSelect()
次查询SELECT
Jena中的执行是懒惰的,所以为了时间执行你需要实际枚举结果,执行不会完成,直到结果被完全枚举,例如
ResultSet results = qexec.execSelect();
long numResults = ResultSetFormatter.consume(results);
此时你可以停止计时器