Я строю график с более чем 90000 ребрами:
DefaultDirectedGraph graph = ...
graph.addVertex(keyFrom);
graph.addVertex(keyTo);
graph.addEdge(keyFrom, keyTo);
В новой версии у меня следующие результаты:
- BUILD_GRAPH заняло 13596 мс Число ребер: 90469
- BUILD_GRAPH заняло 14354 мс. Число ребер: 94309
- BUILD_GRAPH заняло 6647 мс. Число ребер: 90465
Со старой версией у меня следующие результаты: *
- BUILD_GRAPH заняло 5081 мс Число ребер: 90469
- BUILD_GRAPH заняло 3949 мс Число ребер: 94309
- BUILD_GRAPH заняло 4351 мс Число ребер: 90466
Профилировщик сказал мне, что этот код медленен в lib:
UniformIntrusiveEdgesSpecifics:
return edgeMap.putIfAbsent(e, intrusiveEdge) == null;
Я пытался улучшить хэш-код вершины. Но это не помогает. Я хотел бы перейти на новую версию библиотеки. Но производительность это проблема. Есть идеи, почему новая версия библиотеки работает медленнее?