2010-03-16

MozillaはAppleからコードを借りた

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のコードを見て、俺らの仕事の結果を借りればいいってわけさ。

この人の文章が特に面白かったので、つい訳した次第。

3 comments:

  1. 本当に速くなってくれるといいんですけどねえ。
    HTML5なブログとかツイートとか見てるとどっちを向いても「Chrome/Safari 4/Opera 10.50ちょっ速」「Firefoxもっさりすぎ」という評判ばかりで、かつてのIE6みたいにFirefoxが足を引っ張るせいでまともなHTML5サイトを作れないなんてことすらなりかねない勢いです。
    まあまだJägerMonkeyは入ってないはずなのにMinefieldは体感で明らかにcanvasが速くなってるので、少しは期待できそうですが。

    ReplyDelete
  2. トレーシングの効果は、ちょっと疑問ですよね。
    末尾再帰のループ化とかはしてほしいけど。

    ReplyDelete
  3. I understand after translate this, I think mozilla stil the best browsre in the world.

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.