所以我一直在将一些代码从 Javascript 移植到现在可以运行的 PHP 中,但是,执行时间很短。在 PHP 中大约需要 26 秒,而在 javascript 中它非常快。我已经能够将其分解为导致问题的 for 循环。这是循环
for ($R0d = 0; $R0d < $F0d; $R0d = $R0d + 16) {
$f0d = [bitwise_and(JS_charCodeAt($C0d,($R0d + 4)), 0xff) | shift_left_32((bitwise_and(JS_charCodeAt($C0d, ($R0d + 5)), 0xff)), 8) | shift_left_32((bitwise_and(JS_charCodeAt($C0d, ($R0d + 6)), 255)), 16) | shift_left_32((bitwise_and(JS_charCodeAt($C0d, ($R0d + 7)), 255)), 24), bitwise_and(JS_charCodeAt($C0d, ($R0d)), 255) | shift_left_32((bitwise_and(JS_charCodeAt($C0d, ($R0d + 1)), 255)), 8) | shift_left_32((bitwise_and(JS_charCodeAt($C0d, ($R0d + 2)), 255)), 16) | shift_left_32((bitwise_and(JS_charCodeAt($C0d, ($R0d + 3)), 0xff)), 24)];
$f0d = x64Multiply($f0d, $M0d);
$f0d = x64Rotl($f0d, 31);
$f0d = x64Multiply($f0d, $I0d);
$P0d = x64Xor($P0d, $f0d);
$P0d = x64Rotl($P0d, 27);
$P0d = x64Add($P0d, $o0d);
$P0d = x64Add(x64Multiply($P0d, [0, 5]), [0, 1390208809]);
$H0d = x64Multiply($H0d, $I0d);
$H0d = x64Rotl($H0d, 33);
$H0d = x64Multiply($H0d, $M0d);
$o0d = x64Xor($o0d, $H0d);
$o0d = x64Rotl($o0d, 31);
$o0d = x64Add($o0d, $P0d);
$o0d = x64Add(x64Multiply($o0d, [0, 5]), [0, 944331445]);
}
`
每个单独的函数调用都很好,我已经看到每次迭代大约需要 0.01 秒,而对于我在这段代码中使用的测试字符串,大约需要 24-27 秒。这次的循环运行了 2444 次。想象$F0d = 39104
无论如何,我是否可以像在使用 JavaScript 的浏览器中那样将执行时间缩短到不到一秒?
慕的地6264312
慕沐林林