JavaFX 8のWebViewのJavaScriptエンジンは何?

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

紹介 kiidax
元、環境非依存な職業プログラマー。Blenderで遊んでいます。

コメントを残す