Я использую jbcrypt для хеширования паролей в проекте. Производительность составляет около 500 мс при проверке паролей на оборудовании, которое я использую (log_rounds установлен на 12).
Однако через некоторое время при регулярном использовании время производительности внезапно падает до колоссальных 15 секунд. Падение происходит очень внезапно, без увеличения и остается постоянным до перезапуска процесса.
Профилирование показывает, что дополнительное время используется в методе key(..).
Источник: http ://jbcrypt.googlecode.com/svn/tags/jbcrypt-0.3m/src/main/java/org/mindrot/jbcrypt/BCrypt.java
Этот метод вычисляет хэш только с использованием базовых функций, таких как xor, сдвиг и т. д. Никаких назначений объектов, использования внешних ресурсов, генерации случайных чисел и т. д.
Производительность не падает для других функций в том же процессе. Распределение памяти стабильное и низкое. Полный сборщик мусора не задействован.
Кто-нибудь видел это раньше или есть подсказка, почему это происходит? Я мог понять переменную производительность, которая в какой-то степени зависела от других обстоятельств, но это очень внезапное и стабильное падение примерно с 500 мс. примерно до 15000 мс.
Подробнее здесь: https://stackoverflow.com/questions/215 ... ng-jbcrypt