Re: Google Chromeは速くないって
Google Chromeは速くないって - umitanuki日記
ベンチマークを行うなら測定環境を書いてほしいな。それはさておき。
同じレンダリングエンジンを使っているにも関わらず、SafariよりChromeの方が3.6倍ほど遅いとすると、それはV8からレンダリングエンジンを操作するコストが、SafariのJavaScriptエンジンからレンダリングエンジンを操作するコストより、かなり大きいということを示唆しているのではないか。つまり、Templates (Embedder's Guide - Google V8 JavaScript Engine - Google Code)の呼び出しオーバーヘッドが現状無視できない程度に大きい、と。
もしそうなのだとすると、Templatesには最適化の余地があるのだろうし、十分な最適化がなされればChromeのDOM操作もSafariと遜色ないものになると考えるのが自然だ。いつまでもSafariより遅いままのChromeと思うなよということ。
また、Chromeには別の最適化の余地があることも忘れてはならない。すなわち、ネイティブメソッド呼び出しのコストを支払うくらいならV8で実行するコストを支払った方がよい場合もあるということだ。
ここで話題にしているDOM操作に関して言えば、ネイティブメソッド呼び出しのオーバーヘッドの削減に限界があるのは仕方がないとして、DOM操作のコア部分をV8内にオフロードすることでさらなる最適化を目論むという方針を採り得るのではないか。例えば、現在のDOMステートをV8のスペース内に保持しておき、定期的にレンダリングエンジンにバッチ的にwrite backするというアーキテクチャを採れたとする(あるいはLazyなDOM操作を実現するJavaScriptライブラリを実装してそれを使うのでもいいかも)。
もしそれが可能なら、大半のDOM操作はV8ヒープ上の操作で済み、しかもそれはV8エンジンによって圧倒的に高速化される…少なくとも見込みがある。JavaScriptエンジンが低速だった時点ではこういう手法は「逆最適化」でしかなかったが、V8やTraceMonkeyであれば事情が違ってくるのではないか。
と、まあそんなことを考えた。卒論ネタなどにどうぞ。
Comments and Trackbacks