Я пишу тест 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