Вы использовали модуль Fast PBKDF2, как показывает вывод cProfile
.
Я предполагаю, что любые измерения производительности, выполненные python-fastpbkdf2
, сравнивались со старыми версиями Python, OpenSSL или обоими,и более новые версии набрали скорость (в то время как Fast PBKDF2 не обновлялся более трех лет).Похоже, что по состоянию на 2016 год (через год после того, как Fast PBKDF2 увидел свое последнее обновление), Python добавил быстрый путь при связывании с OpenSSL 1.1.0 или выше, который использует оптимизированные OpenSSL PKCS5_PBKDF2_HMAC
чем доморощенная (более медленная) версия Python.И даже до этого, Python улучшил свою доморощенную версию еще в конце 2013 года ;если бы тесты python-fastpbkdf2
были выполнены до того, как это улучшение было выпущено, производительность была бы намного хуже.
По сути, не предполагайте, что утверждения о том, что они на 40% быстрее, верны, даже если они были верны впрошлое (и нет гарантии, что они были правдой и в прошлом).
Возможно также, что компиляторы и / или ваши сопровождающие репозитория пакетов создали лучшие версии OpenSSL;по крайней мере одно из заявленных преимуществ Fast PBKDF2 заключается в том, что он явно указывал ряд операций, но правильно скомпилированная версия OpenSSL, использующая PGO + LTO, в любом случае сможет автоматически встроить соответствующие операции (и если файлы установки для python-fastpbkdf2
неправильно скомпилировал его с PGO + LTO, в результате он мог проиграть).Между этим и OpenSSL, делающим подобные улучшения кода, разрыв легко мог бы сузиться.