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);
然后你可以停止你的计时器
所以我在 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);
然后你可以停止你的计时器