Кто-нибудь разработал JNI-привязки для вызова хеш-функций OpenSSL из Java?
Я знаю, что в Java встроены хеш-функции. Проблема в том, что они выполняются всего на треть от скорости собственных реализаций OpenSSL,Существует проект OpenSSL-Java на sourceforge , но у него нет файлов для загрузки.
Моя цель на самом деле здесь не вызывать OpenSSL, а преодолеть неоптимальную производительность Java в отношении хеширования.
Попробуйте https://www.nayuki.io/page/native-hash-functions-for-java они реализуют хеш-функции в c, x86 assembly и x86-64 assembly
c
x86 assembly
x86-64 assembly
Увеличьте до 1,68 × для SHA-256, но я не вижу разницы с небольшими файлами.
Так что, если вы склонны использовать с маленьким файлом, я предлагаю придерживаться Java.
Очевидно, что вы можете, но это из-за JNI, вы не получаете повышение производительности.
Я твердо верю, что вы должны написать подпрограмму C, которая не только рассчитывает хэши, но и выполняет IO файла. Не забывайте использовать скорость ввода-вывода, отображаемую в памяти, иначе ограничивающим фактором является копирование буферов.