JavaScriptの高速化手法とオープンソース同士の競争

2009年3月 3日はてなブックマーク del.icio.us Twitter

JavaScriptの実行速度をいかに速くするか。これが最近のWebブラウザの大きなセールスポイントになっていますが、そこではオープンソース同士で高速化手法のパクり合い、いや、情報共有が積極的に行われているそうです。

JavaScriptっていままでどれだけ遅かったんだよ、と思うほど最近の高速化競争は激しいものがあります。ざっくりと見てみましょう。

先日アップルがSafari 4のβ版を公開しましたが、@ITの記事によると、IE7と比べて最大30倍の速度向上なのだそうです。

JavaScriptを、Internet Explorer 7より最大30倍速く、Firefox 3よりも3倍以上速く実行

ちなみにOperaは最大で50倍の高速化を実現するJavaScriptエンジン「Carakan」を開発中

そしてFirefoxが次期バージョンで搭載予定のJavaScriptエンジン「TraceMonkey」は最大で現バージョンの22倍速

ほかにも、Google Chrome、Internet Explorer 8もJavaScriptの実行速度の向上をうたっていることは皆さんご存じの通りです。

これだけ劇的な高速化には、いったいどのような手法が用いられているのでしょうか。Mozilla Japanテクニカルマーケティング担当の浅井智也氏が、FirefoxでのJavaScriptの高速化について解説したスライド「Trace Monkey」がとても詳しくて分かりやすかったので紹介します。

このスライドによると、JavaScriptの実行が遅い原因は主に4つ。

つまり、実行時に逐次解析しつつ、演算するまで変数のデータ型が分からないため型チェックと型変換が頻繁に起きて、オブジェクトの構造が決まってないから確保すべきメモリ領域も事前に決められず、配列がない代わりにハッシュでデータアクセスしている。だから遅いらしいです。

というわけで、これらを解決する手段として、ジャストイン・コンパイラ、ループの直前では型付けしてループ、内部的に仮クラスや配列を設定する、という手法がとられるとのこと。

また、Tracingと名付けられた、実行プログラムのボトルネックを見つけ出してそこの実行を最適化することで全体の実行速度を向上させる手法も開発中だそうです。

ところで、この浅井さんのこのスライドの4pにはこんな一文があります。

高速化する技術をガンガン実装中
オープンソースで互いの手法をパクりあい(爆)

冗談のように書かれているのでどれだけリアルなのか計りかねますが、それでもGoogle Chrome、Safari、FirefoxのオープンソースによるWebブラウザが、それぞれお互いの手法を自由に取り入れて高速化を実現しようとしている様子を想像してしまいます。お互いのソースコードやメーリングリストなどでの議論の内容を自由に見ることができるわけですから、それぞれイイトコドリをすることはまったく自然なわけで、いろんな形で情報共有が行われていてもおかしくありませんよね。

こうやって複数のオープンソースのチームが競っている状況というのは、企業同士が手の内(ソースコード)を隠しながら競争しているのとはまったく違って、お互いのいいところを自由に取り入れながら競争しているわけで、あっというまに一方の優位性が他方に取り入れられて差がなくなる。それゆえに激しい競争とものすごいスピードでの進化が起きているような気がします。オープンソースの1つの優位性ですね。

一方で、マイクロソフトやオペラ。彼ら商用ソフトウェア陣は、おそらくコードがオープンソースで汚染されないように、オープンソースから隔離された状態で開発をすすめていかなくてはいけない状況になっているのではないでしょうか。もちろん、ここで紹介したような手法レベルの情報については自由に参照することができるのでしょうけれど、開発チームがオープンソースのコードを参照することはたぶん禁じられているはず。

僕自身は商用ソフトもオープンソースも同じように発展してくれることを祈る一人ではありますが、この戦いの状況では商用ソフトのほうが不利ではないかと思います。CNET Japanの記事「オープンソースブラウザ、IE8とOperaを圧倒--JavaScript最新ベンチマーク:マーケティング - CNET Japanから。ベンチマークでオープンソースチームが圧勝したという記事。

同テスト結果によれば、プロプライエタリなブラウザメーカーであるMicrosoftとOperaは、大きな遅れを取っている。
パフォーマンスという分野で、あらゆるオープンソースブラウザが、実に大きな差をつけて、プロプライエタリなブラウザを破っている。

もちろんベンチマークは性能の一部のみを表したもので、これが実力差であると結論付けるのは偏った見方になる恐れがあります。それにこうした状況が本当かどうかはまったくの僕の推測です。

しかし、商用ソフトウェアがこの状況をはねのけるには相当な努力が必要なんだろうなあと、プログラマはオープンソース陣営が高速化したコードを覗いてみたいんじゃないかなあと、僕はそこに思いをはせずにはいられません。


次の記事≫ Google、Twitter、Yahoo Pipes、Netvibesを華麗に使いこなす英国政府
前の記事≪ Ajax ~ 入門記事、解説記事などのまとめ

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
RSSリーダーで : Feed
≫ 過去の記事を読む




アクセスランキング - 過去7日間

  1. IT系上場企業の平均給与を業種別にみてみた …
  2. IT系上場企業の平均給与を業種別にみてみた …
  3. SIerとパッケージベンダはどちらが高給? …
  4. Cassandra入門と、さらに詳しく知るた…
  5. ミクシィのNoSQLデータベース「Tokyo…
  6. SQLの都市伝説。マイケル・ストーンブレイカ…
  7. TwitterがBitTorrentで高速に…
  8. 仮想化は、クラウドのインフラとしては不要では…
  9. セキュリティを高めた「仮想化Firefox」…
  10. 楽天、性能向上を分散オブジェクトキャッシュで…
  11. Twitter、急成長に対応するため独自のデ…
  12. アドビ「iPadでFlashアプリを動かす」…
  13. グーグル、「政府専用Google Apps」…
  14. ITまんが 2010年版 ~ ITが楽しく分…

アーカイブ  (最新記事10)

バックナンバー

2010年7月
2010年6月
2010年5月
2010年4月
2010年3月
2010年2月
2010年1月
2009年12月
2009年11月
2009年10月
2009年9月
2009年8月
2009年7月
2009年6月
2009年5月
2009年4月
2009年3月
2009年2月






Trackbacks (TrackbackURL:http://www.publickey1.jp/mt/mt-tb.cgi/25)

  • (トラックバックは承認後に掲載されます)

Comments