2013-03-18 6 views
0

Я пытаюсь выполнить выполнение алгоритма Neo4J. Я запускаю алгоритм 10 раз, однако первый запуск всегда значительно длиннее остальных исполнений. Например:Neo4J Время выполнения задания

elapsed time = | 86345.0 | 3417.0 | 3416.0 | 4228.0 | 3369.0 | 3323.0 | 3338.0 | 3370.0 | 3775.0 | 3370.0 //ms 

Почему это происходит? Является ли Neo4J достаточно умным для хранения уже посещенных (считанных из БД) вершин в памяти, таким образом, из второго выполнения он считывает из памяти не базу данных? Мои наборы данных достаточно малы, чтобы вписаться в память (и осталось много места).

ответ

4

Ваше предположение верно. Neo4j использует кэширование на нескольких уровнях:

  1. отображается кэш-память
  2. кэш объектов

Первый запуск работает на холодных кэшей, так что все данные должны быть считаны из подсистемы ввода/вывода. Затем любой последующий доступ извлекается из кэшей.

Для более подробного объяснения см. http://docs.neo4j.org/chunked/stable/configuration-caches.html.

Смежные вопросы