【发布时间】:2012-07-23 14:05:42
【问题描述】:
我正在编写一个 JUnit 测试来检查大约一百个 SPARQL 查询的结果。
for(String query: queries)
{
QueryEngineHTTP qe = new QueryEngineHTTP(endpoint, query);
ResultSet rs = qe.execSelect();
while(rs.hasNext()) {...}
}
为了优化性能,我想并行执行一些查询,但不是同时执行所有查询。 Jena 或其他库中是否有这种机制?我可以使用线程池,但我想优化的解决方案会更好,因为它可以:
- 最小化开销
- 在存在此类协议的情况下,一次将所有查询发送给服务器,从而最大限度地减少延迟
- 指定每个端点的最大并发查询数,这样如果我有 50 个 DBpedia 查询和 50 个 LinkedGeoData 查询,它将一次运行 5 个
- 近似查询的运行时间,以便它可以首先启动更快的查询
- 确定最适合 SPARQL 端点缓存的查询顺序
【问题讨论】:
-
你看过 google-guava 库吗?它们对 Java Futures API 进行了非常强大的扩展。我不确定这是不是你要找的东西
-
谢谢!但是,如果我理解正确,它是对一般并发性的扩展,而不是特定于 SPARQL?