Asa Dotzler: Firefox and more: mozilla borrowing a bit of code from apple
MozillaのJavaScriptエンジンに関する混乱があるようなので、David Mandelinのブログを紹介しておく。David Mandelin's blog » JägerMonkey & Nitro Components。また、a quick note on JavaScript engine components ✩ Mozilla Hacks – the Web developer blogも役に立つ。
俺は技術屋ではないが、まあ、こういうこったろう。
数年前、JavaScriptエンジンはみな、めちゃ遅かった。んでまず、Appleが、SquirrelFish Extremeを作った。これは、Method JITと呼ばれるテクニックで、JavaScriptを最適化してた。Mozillaは、TraceMonkyを作った。これは、トレーシングという呼ばれるテクニックで、いくつかのケースを、すばらしく高度に最適化できるんだ。最後に、GoogleのV8が現れた。こいつも、今はNitroと呼ばれているSquirrelFish Extremeによく似たテクニックで、最適化をしてる。
第一ラウンドの結果としては、Firefoxは、ごく限られたある種のコードを、すっげーサイキョーに高速化したが、残りのほとんどは、何もできずに終わった。今、JagerMonkeyによって、MozillaはNitroやV8のようなMethod JITと取り入れた。これによって、トレーシングが上手くいかない多くのケースを最適化できるようになり、ようやく俺らも、チョッ早になったというわけだ。
このMethod JITの実装には、AppleのNitro JavaScirptエンジンの一部を、再利用して、さらに、独自の新機能を付け加えてる。
さらにクールな事を教えてやろうか。method JITを取り入れたことによって、俺らは他のJSエンジンと肩を張れるようになったわけだが、さらに、トレーシング機能をつかって、より高速化が図れる余地を残しているってわけだ。つーわけで、俺らが世界最速になる場面が、今後増えるわけだな。しかも、他の場面でも、他のブラウザより遅くないと来ている。んでさ、AppleやGoogleや、あるいはOperaとかが、自分のJSエンジンにも、トレーシングが欲しくなってきたらどうするんだろうね。その場合、奴らはMozillaのコードを見て、俺らの仕事の結果を借りればいいってわけさ。
この人の文章が特に面白かったので、つい訳した次第。
本当に速くなってくれるといいんですけどねえ。
ReplyDeleteHTML5なブログとかツイートとか見てるとどっちを向いても「Chrome/Safari 4/Opera 10.50ちょっ速」「Firefoxもっさりすぎ」という評判ばかりで、かつてのIE6みたいにFirefoxが足を引っ張るせいでまともなHTML5サイトを作れないなんてことすらなりかねない勢いです。
まあまだJägerMonkeyは入ってないはずなのにMinefieldは体感で明らかにcanvasが速くなってるので、少しは期待できそうですが。
トレーシングの効果は、ちょっと疑問ですよね。
ReplyDelete末尾再帰のループ化とかはしてほしいけど。
I understand after translate this, I think mozilla stil the best browsre in the world.
ReplyDelete