PHPで書かれたスクリプトと、Javascriptで書かれた同じスクリプトがあります。
これは100万回繰り返され、そのたびに文字列を配列にストリップし、最初の配列項目を新しい変数に割り当てます。
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をPHP-CLI5.3.10で実行し、Javascriptをノードv0.6.12で実行します。
PHPの場合は「memory_get_usage()」を使用し、Javascriptの場合は「process.memoryUsage()」を使用します。スクリプトの最初、最後、マイナスの最後から始めて実行し、最後にバイト数をmbに変換します。
PHPは0.00065mbのメモリを使用しますが、Javascriptは0.25 mbを使用しますが、PHPは4秒、Javascriptは0.71秒かかります。結果を2台の異なるマシンで実行しました。
Javascriptのメモリ使用量がPHPよりもはるかに高い理由を誰かが知っていますか(Javascriptが非常に高速に実行されるという事実にもかかわらず)?
私が思いついた唯一の説明は、隠しクラスを使用するV8の性質により、速度は向上しますが、メモリ消費量が増加するというものでした。