2009-11-12 ナビ子記法について追記しました



今日は、 amachang さんの記事 http://d.hatena.ne.jp/amachang/20071010/1192012056 を 1mm だけ掘り下げ、 IE 以外のブラウザでも document へのアクセスを速くする方法がないか、色々試してみます。 # 記事自体はずいぶん前に書き上げてたけど、公開するの忘れてたんだな。 C系を追加しました。C系は「ネストしたスコープから グローバル変数 にアクセスするとどうなるか?」がテーマです。

以下は様々な方法で document へのアクセス速度を計測します。 A系では、非日常的な方法で測定し、B系では実際の用法に近い形で測定します。C系では何重にもネストしたスコープから、 グローバル変数 にアクセスするとどうなるかを測定します。

こうすると、いいじゃないかな

A2 と B3 が一番速いんですが、いまさら書き直すのは大変ですよね。そこで B4 をベースにした、こんな方法はどうでしょう。

script の先頭に、以下の1行を仕込んでおきましょう。

var _doc = document ;

そして、document の代わりに _doc を使いましょう。

function hoge() { _doc.piyo(); }

全ての JavaScript ファイルを grep して、 "document." を "_doc." に置換してしまいましょう。

# doc って名前にすると、grep で引っかかりすぎるので、アンダーバーとかつけとくと吉。

# 名前はお好みで。グローバル変数の汚染が嫌なら、B5 をベースにしても実速度的には大差ありませんし。