Apache Jena查询执行时间

时间:2017-05-16 19:53:47

标签: jena apache-jena

所以我在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执行所有操作并找到答案。

1 个答案:

答案 0 :(得分:1)

QueryExecutionFactory.create(query,dataset);

所有这一切都是创建一个可以执行查询的执行,重要的是执行您的查询。

开始执行,您需要调用execX()方法之一,这取决于查询类型,例如execSelect()次查询SELECT

Jena中的执行是懒惰的,所以为了时间执行你需要实际枚举结果,执行不会完成,直到结果被完全枚举,例如

ResultSet results = qexec.execSelect();
long numResults = ResultSetFormatter.consume(results);

此时你可以停止计时器