Apache Jena 查询执行时间

Apache Jena Query Execution Time

所以我在 Jena 中有这段代码,它测量 select 查询的执行时间

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 是耶拿 TDB 位置。

为了对此进行测试,我 运行 在同一个 TDB 存储上使用 Apache Jena 的 Fuseki 执行相同的查询,我发现执行时间不同(可能是实际执行时间)。使用 Jena 查找执行时间的正确方法是什么。我不想使用 Fuseki 执行所有操作并找到答案。

QueryExecutionFactory.create(query,dataset);

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

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

Jena 中的执行是惰性的,因此为了计时执行,您需要实际枚举结果,执行不会完成,直到结果被完全枚举,例如

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

然后你可以停止你的计时器