различия в производительности levelDB между python и java - PullRequest
0 голосов
/ 28 апреля 2019

Я пробовал с загрузкой данных levelDB с помощью python и java и получил несколько большой сюрприз, когда простой тест показал гораздо лучшую и стабильную производительность на python, чем в java.

С java пробовал:

  • org.iq80.leveldb версия версии 0.9 (собственный java-импл) => Предпочтительный параметр
  • org.fusesource.leveldbjni версия 1.8 (jni-мост к C ++, собственный импл)

С Python:

  • happynear / py-leveldb-windows

Вставка (только что) набора данных RDF в 1M трижды, я получил эти результаты (значения не важны, я думаю, только различия):

  • Собственный Java: среднее значение 26 секунд (большие вариации времени для каждого пакета вставки 1k)
  • JNI Java: большинство заблокировано
  • Python: в среднем 6 секунд (последовательно, почти нет изменений в пакетах по 1 КБ)

Я думал, что это может быть проблема с памятью (gc?) с Java, поэтому увеличилПамять, по шагам, много, безрезультатно.

Кто-нибудь тестировал jav-интерфейсы / реализацию leveldb выше и может дать мне несколько мнений / вводов?

Я бы предпочел использовать java (и нативную версию java, если это вообще возможно) с момента загрузки и подготовки набора данных.намного быстрее в Java, и было бы легче прикасаться к Java-Impl при необходимости.Но производительность и непредсказуемость вставки не за горами.

Заранее спасибо.

...