Chromeのevalは遅い?
Google ChromeのJavaScript、evalしたらすごい遅かった - むぅもぉ.jp
本当に?
V8 shellを使って以下のコードを実行したら、test1が20msec、test2が1168msecかかった。Athlon 64 X2 5000+上のVM上で実行したものなので数値はあまり信用できないが、test2の方が明らかに遅い。
function test1() {
var date = new Date();
var result = 0;
for(var i = 0; i < 1000000; i++){
result += i;
}
print((new Date() - date).toString());
}
function test2() {
var code = [
'var result = 0;',
'for(var i = 0; i < 1000000; i++){',
'result += i;',
'}'
].join('\n');
var date = new Date();
eval(code);
print((new Date() - date).toString());
}
test1();
test2();
でもこれはChromeのevalが遅いからそうなるのか?
そうではない。test2をちょっとだけ書き換えたtest3を用意してみた。
function test3() {
var code = [
'var result = 0;',
'for(var i = 0; i < 1000000; i++){',
'result += i;',
'}'
].join('\n');
var date = new Date();
eval('function calcEval(){' + code + '}');
calcEval();
print((new Date() - date).toString());
}
test3();
と、やっぱり20msecで済み、test1と遜色ない結果になる。場合によってはtest3の方がtest1より速くなることもある。
ブラウザで確認する場合は以下のページからどうぞ。test1, test2は元記事のもので、test3が新しく追加したもの。私の環境だとtest1, test3が20msec、test2が約1900msecかかる。
Comments and Trackbacks