Я пробовал с загрузкой данных 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 при необходимости.Но производительность и непредсказуемость вставки не за горами.
Заранее спасибо.