hakobera's blog

技術メモ。たまに雑談

もし node v0.4.9 (64bit版) が Crankshaft を有効にしたら

Node v0.5.1 がリリースされて、64bit 版でも Crankshaft が有効になって、V8 Benchmark Suite を移植したりして、色々ベンチをとっていたら、「Crankshaft はえぇーーーーーーーー!」という結果になった。

hakobera/node-v8-benchmark-suite · GitHub

で、各バージョンのベンチマークでも取ろうと思ったら、既に @ さんが既に取っていたので、

NodeのVersionゴトの簡単なベンチマーク - ぽりぴぃすらいと

@ さんから教えてもらった

0.4 ブランチをチェックアウトして deps/v8 以下を削除,そこに v8 をまるごとクローンしてビルドすれば Node 0.4.9 + V8 3.4 のできあがり♪

という別のネタをやってみました。

手順

wget http://nodejs.org/dist/node-v0.4.9.tar.gz
wget http://nodejs.org/dist/v0.5.1/node-v0.5.1.tar.gz
tar -xzf node-v0.4.9.tar.gz
tar -xzf node-v0.5.1.tar.gz
rm -rf ./node-v0.4.9/deps/v8
cp -r ./node-v0.5.1/deps/v8 ./node-v0.4.9/deps/
cd node-v0.4.9
./configure
make

build/default/node が実行ファイルです。

結果

「Crankshaft はえぇーーーーーーーー!」

v0.4.9 Normal v0.4.9 Crankshaft 有効 v0.5.1
Richards 2215 4286 4437
DeltaBlue 2784 6466 5957
Crypto 1395 4020 3943
RayTrace 2795 6378 6277
EarleyBoyer 7464 9603 8793
RegExp 1149 1415 1347
Splay 1551 1641 1526
Score 2279 3982 3813

64bit 版 Node を使ってる人で v0.6 を待ちきれない人で、パフォーマンスを重視する皆様は是非是非お試しあれ。ま、ブラウザベンチの移植なので、一概に速くなっていると言えるわけではないんですがね。

おまけ

node 本体にあるベンチマークもやってみたよ。JS の function call は速くなっていて、C++ の function call は遅くなっているみたい。

v0.4.9 Normal

100000000 JS function calls: 2622
100000000 C++ function calls: 12124

JS function call speed: 26.22 microseconds
C++ function call speed: 121.24 microseconds

JS speedup 4.6239511823035855

v0.4.9 Crankshaft 有効版

100000000 JS function calls: 1797
100000000 C++ function calls: 19286

JS function call speed: 17.97 microseconds
C++ function call speed: 192.85999999999999 microseconds

JS speedup 10.732331663884251

v0.5.1

100000000 JS function calls: 1893
100000000 C++ function calls: 18593

JS function call speed: 18.93 microseconds
C++ function call speed: 185.93 microseconds

JS speedup 9.821975699947174