Google Docsはグローバル変数を使う、定石とは逆の実装

 

Web Application Development - SitePen

Mike Wilcox氏がSitePen Blog » Web Page Global Variable Performanceにおいて、JavaScriptのグローバル変数とローカル変数に関する性能について興味深いベンチマークと考察を公開している。Mike Wilcox氏はフルフィーチャJavaScriptフレームワークDojoの開発者。

Mike Wilcox氏は最近Google Docsに追加されたベクタグラフィックス作成/挿入機能に興味を持ったという。DojoのベクタグラフィックAPIであるdojox.gfxと同じSVGとVMLを使っているためだ。Firebugでその実装を調査したところ、コードほとんどにおいてグローバル変数が使われていることに気がついて驚いたとしている。

JavaScript実装定石のひとつにグローバル変数ではなくローカル変数を使うというものがある。Google Docsの実装でグローバル変数が多用されていることは、この定石に反する。Mike Wilcox氏はそこに興味を引かれたという。氏は定石を確かめるために2万5,000個の乱数をローカル変数とグローバル変数として作成および参照するベンチマークを作成。Firefox 3.5、Firefox 3.0、IE8、IE7、IE6、Chrome 3、Safari 4で実行時間を計測して比較している。

ベンチマーク結果 - Web Page Global Variable Performanceより抜粋

結果からおもに2つの考察が紹介されている。ひとつは、グローバル変数よりもローカル変数の方が処理が高速になるという定石は有効であること。ただし、特定のブラウザ、特にSafariではその限りではなく、ブラウザの実装に依存していること。もうひとつは、グローバル変数でもローカル変数でも、参照よりも作成の方が処理時間がかかることだ。

Mike Wilcox氏の実施したベンチマークでは、Firefox 3.5のグローバル変数の作成がきわだって遅い。IE6をのぞいて、ほかのすべてのブラウザよりも遅くなっている。氏は原因としてFirefoxがXPCOMを使いすぎており、これが貧弱なメモリ管理やコードの肥大化の原因になって、処理速度の低下を招いているのではないかと意見が述べられている。Firefox 4.0ではXPCOMから別の実装を移ろうとしているという記述もある。

Mike Wilcox氏も指摘しているが、興味深いのはGoogleの判断だ。Chromeではほとんど問題にならないが、ベンチマークの結果をみれば最大シェアを占めるIEやFirefoxではグローバル変数ではなくローカル変数の方が処理が高速になる。これに気がついていながら、なぜGoogle Docsではグローバル変数が使われているのか興味深い。



転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

ASUS、独自クーラー搭載のGTX 1080カードにリファレンスクロックモデル
[13:49 7/28] パソコン
博報堂DYメディアパートナーズなど、MAによるバリアブルDMの自動発送を提供
[13:27 7/28] 企業IT
ヤマハ、音楽共有「MusicCast」対応のサウンドバー&無線スピーカーセット
[13:16 7/28] スマホとデジタル家電
[加藤諒]リリー・フランキーとのキスを告白 ダウンタウンDX
[13:05 7/28] エンタメ
[明日のとと姉ちゃん]7月29日 第101回 常子が苦渋の決断 第17週「常子、花山と断絶する」
[13:00 7/28] エンタメ

求人情報