【发布时间】:2016-01-12 14:06:24
【问题描述】:
我们想对 PHP 中的 hash_pbkdf2 函数进行基准测试,以选择合适的迭代次数供我们的应用程序使用。
当我在 m4.large AWS 实例上运行我的基准脚本时,运行时间比在我的笔记本电脑上多五个数量级。
此 Gist 显示了我正在使用的脚本,以及我从一个 m4.large 实例(负载下)、一个 t2.micro 实例(具有完整 CPU 积分且无负载)和三台不同速度的 Intel i7 笔记本电脑获得的结果。
https://gist.github.com/roberthl/301a3fb0a32baf057806
您可以看到,在 i7 笔记本电脑上,100,000 次迭代需要不到 200 毫秒,但在 AWS 实例上,单次迭代需要这么长时间。
我已经包含了 PHP 版本和一个 OpenSSL 基准,显示 sha256 在 AWS 实例和 i7 笔记本电脑上花费了相当的时间(以及 PHP 散列函数的基本基准也显示了这一点) - 建议它与 PBKDF2 操作特别相关。
发生这种情况的原因是什么,我该如何加快速度?
【问题讨论】:
-
只是一个猜测:pbkdf2 函数使用纯 PHP - 同样用于哈希,哈希使用本机代码。他们可能不想升级它; pbkdf2 在服务器上会花费很多时间。
标签: php performance amazon-web-services cryptography pbkdf2