我有一个用 PHP 编写的脚本和用 Javascript 编写的相同脚本。
它迭代一百万次,每次都将一个字符串剥离到一个数组中,并将第一个数组项分配给一个新变量。
PHP 是:
class First
{
public function Iterate()
{
$count = 1000000;
$test_string = '';
$test_array = '';
$first_word = '';
for($i=1; $i <= $count; $i++){
$test_string = 'This is a test string';
//could use explode but no explode in js
$test_array = split(" ", $test_string);
$first_word = $test_array[0];
}
}
}
$first = new First();
$first->Iterate();
Javascript是:
function First() {
this.Iterate = function() {
count = 1000000;
test_string = '';
test_array = '';
first_word = '';
for(var i=1;i <= count; i++){
test_string = 'This is a test string';
test_array = test_string.split(" ");
first_word = test_array[0];
}
}
}
first = new First();
first.Iterate();
我使用 PHP-CLI 5.3.10 运行 PHP,使用节点 v0.6.12 运行 Javascript。
对于 PHP,我使用“memory_get_usage()”,对于 Javascript,我使用“process.memoryUsage()”。我在脚本的开头运行它们,然后在结尾,然后用 start 减去 end,最后将字节数转换为 mb。
PHP 使用 0.00065 mb 内存,而 Javascript 使用 0.25 mb 但是 PHP 需要 4 秒,而 Javascript 需要 0.71 秒。我已经在 2 台不同的机器上运行了结果。
有谁知道为什么 Javascript 的内存使用率会比 PHP 的高得多(尽管 Javascript 的执行速度要快得多)?
我能想到的唯一解释是 V8 使用隐藏类的特性提高了速度但增加了内存消耗。