ネット見てたら、全然わかってない人多すぎなんで。
SquirrelFish
WebKitのJavaScriptCoreに入っているJavaScriptエンジン。非常に優秀なバイトコードを生成、実行する
SquirrelFish Extreme (Nitro / SFX)
SquirrelFishをJIT化+バイトコードの最適化など
JaegerMonkey
baseline JIT。SpiderMonkeyをJIT化しただけのもの
TraceMonkey
Tracingのアルゴリズムを利用したJIT。ポイントにはまれば生成されるコードは最速(のはず)
JaegerMonkeyはJavaScriptCoreのコードを持ってきたという話があるけど、バイトコードをネイティブコード化するライトウェイトなJITコンパイラだけを持ってきている。SquirrelFishの肝は優秀なバイトコード生成+最適化なので、JaegerMonkeyだけだと、バイトコードの質でSFXには勝てない。
JavaScriptチームが欲したのは、シンプルにバイトコードをネイティブコード化する方法を求めていて、自分たちで書くかどこからかコードを持ってくるかという二択だったんだけど、自分たちの用途だと、SFXのコンパイラが適していたので、それを持ってきただけ。今は自分たちのバイトコード用に最適化中。
で、
fatvals
JavaScriptの型情報を64ビット化して、バイトコードの生成・実行効率とJaegerMonkeyでのJIT化時の効率化を狙ったもの。それってSFXでも同じことやってた気が。
今は、JaegerMonkeyの2ndステージで、fatvalsとマージしたものを開発中。まともな速度が出ているのは、x86だけだけどさ。x64は先月中ごろから手を入れ始めた。ARMは、Jacob(ARMの人)の頑張り次第だし、SPARCは(Sun China次第かな)
JavaScriptチームとしては、JaegerMoneky+TraceMonkeyでV8やSFX並みのベンチに結果になる予測で今開発してるって感じ
あとついで。
Tamarin
Adobeと共同で作ってたJIT。あまりにも遅くてプロジェクト終了
NanoJIT
TraceMonekyに使われるJITエンジン。ARM (V5以降でTHUMBはなし)、x86、x64、SPARC、MIPS対応。Tracingの実装時に持ってきたJITエンジン。TamarinがなくなったおかげでAdobeも使ってる(tamarin-redux)。
Yarr
JavaScriptCoreで使われる正規表現エンジン。これをSpiderMonkeyに持ってきたら速くなるんじゃねーのって話も。。。まぁ、ベンチマークの大部分は正規表現のところだしなぁ
0 件のコメント:
コメントを投稿