JavaFX 8のWebViewのJavaScriptエンジンは何?
2014年9月15日 コメントを残す
RhinoとNashonでV8ベンチマークをとってみるとこんな感じ。Windows 8.1 / AMD A6-3500 2.1GHz / Java 8で計測。Java7のRhinoとJava8のNashornのベンチを取ってみるではJavaの実行環境付属のエンジンを使っているが、ここでは2014/9/13あたりに取得したソースをビルドしている。
>java -version java version "1.8.0_11" Java(TM) SE Runtime Environment (build 1.8.0_11-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode) >java -Djava.ext.dirs= -jar ..\..\nashorn\dist\nashorn.jar run.js Richards: 257 DeltaBlue: 77.1 Crypto: 279 RayTrace: 245 EarleyBoyer: 451 RegExp: 165 Splay: 568 NavierStokes: 521 ---- Score (version 7): 272 >java -Djava.ext.dirs= -jar ..\..\rhino\build\rhino1_7R5pre\js.jar run.js Richards: 190 DeltaBlue: 234 Crypto: 222 RayTrace: 387 EarleyBoyer: 411 RegExp: 127 Splay: 230 NavierStokes: 265 ---- Score (version 7): 243
次に、同マシン上のHyper-V環境でのFedora 20でV8をビルドして実行。
$ ../out/x64.release/shell run.js Richards: 12010 DeltaBlue: 12642 Crypto: 9885 RayTrace: 15978 EarleyBoyer: 12220 RegExp: 1767 Splay: 4580 NavierStokes: 9598 ---- Score (version 7): 8311
Windows 8.1のブラウザでrun.htmlで実行してみた。
Chrome 37 Score: 11222 Richards: 14594 DeltaBlue: 18599 Crypto: 12070 RayTrace: 23828 EarleyBoyer: 18346 RegExp: 1957 Splay: 8540 NavierStokes: 10505 Firefox 32 Score: 7549 Richards: 12066 DeltaBlue: 4470 Crypto: 11168 RayTrace: 11118 EarleyBoyer: 14621 RegExp: 1416 Splay: 6334 NavierStokes: 12008 IE 11 Score: 818 Richards: 1183 DeltaBlue: 302 Crypto: 874 RayTrace: 537 EarleyBoyer: 2066 RegExp: 1447 Splay: 1903 NavierStokes: 210
Hyper-V上のFedora 20のGNOME Epiphany 3.10.3でrun.htmlで実行してみた。GNOME EpiphanyはWebKit付属のJavaScriptCoreを使っている。
Score: 5351 Richards: 6005 DeltaBlue: 5098 Crypto: 5487 RayTrace: 8945 EarleyBoyer: 9958 RegExp: 1267 Splay: 5574 NavierStokes: 6356
次にJavaFX 8に付属するWebViewだが、GNOME Epiphanyより大分遅い。
Score: 2012 Richards: 1541 DeltaBlue: 1311 Crypto: 2389 RayTrace: 3120 EarleyBoyer: 3007 RegExp: 1261 Splay: 2849 NavierStokes: 1649
JavaFXのJavaScriptエンジンを推定するためにテストを書いてみた。 このテストはJavaScriptのビルトインオブジェクトがサポートしているプロパティをダンプする。実装状況はエンジンによって違うのでエンジンの種類を特定することができる。列の一番左はコンストラクターとプロトタイプのプロパティの数を表示している。ブラウザ無しの場合はJSの部分だけ抜き出して実行している。Object
の部分だけをブラウザごとに調べてみた。JavaFX 8はJavaScriptCoreっぽい。
V8 (Chrome) | Object: 24, 12 |
IonMonkey (Firefox) | Object: 20, 14 |
Chakra (IE 11) | undefined: 18, 12 |
JavaScriptCore (GNOME Epiphany) | Object: 16, 12 |
Rhino | Object: 18, 12 |
JDK 7 jrunscript | Object: 18, 12 |
Nashorn | Object: 18, 7 |
JDK 8 jjs | Object: 18, 7 |
V8 コマンドライン | Object: 25, 12 (ChromeよりgetOwnPropertySymbolsが追加されている) |
??? (JavaFX 8 WebView) | Object: 16, 12 |