以下の一行をすべての JavaScript の前に読み込む /*@cc_on _d=document;eval('var document=_d')@*/ この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。 たとえば 以下のように、読み込む前と読み込んだ後を比較してみます。 // Before var date = new Date; for (var i = 0; i < 100000; i++) document; alert(new Date - date); // 643 /*@cc_on _d=document;eval('var document=_d')@*/ // After date = new Date; for ... 続きを読む
189 コメント   このエントリーを含むはてなブックマーク このエントリーのブックマーク数

コメント 評価したユーザ 関連ブログ

コメント

Profile_s written by atcard 37日前

d.hatena.ne.jp/amachang/20071010/1192012056

Profile_s written by tsukkee 38日前

/*@cc_on _d=document;eval('var document=_d')@*/

Profile_s written by wonohe 45日前

高速化。ありがたくブクマさせていただきます

Profile_s written by syousai55 47日前

★IEでのdocumentへのアクセスを5倍速く

Profile_s written by amachang 68日前

id:javascripter それってグローバルスコープで出来る?/javascript:var document=window.document;alert(document);

Profile_s written by javascripter 69日前

eval使わなくても、var document = window.documentで十分、YUIもそうしてる。/id:amachang グローバルだとjavascript:alert("hoge" in window);var hoge;がtrueで、記事と同じ状態になって駄目。document = documentもメンバが見つからないから駄目。

Profile_s written by youhey 112日前

IEで高速化

Profile_s written by webmarksjp 129日前

javascript

Profile_s written by warabi 143日前

使いどころによるらしい

Profile_s written by eiichirou-0619 149日前

javascript 高速化

Profile_s written by nekojitan 170日前

/*@cc_on _d=document;eval('var document=_d')@*/

Profile_s written by vbNullString 210日前

IEでJavaScriptを高速化する方法。

Profile_s written by j5ik2o 223日前

こ,こ,これは.すげー.

Profile_s written by m_sho 239日前

これはすごい…

Profile_s written by ginpei 244日前

document他、windowプロパティへのアクセスをIEで高速化させる方法。documentを直接呼ぶとあれこれコストがかかるが、一度変数なんかに入れておくと以降は直接オブジェクトにアクセスできるため早くなる、という事らしい。

Profile_s written by niso1985 272日前

はえー

Profile_s written by sst 297日前

「プロパティアクセス」と「関数呼び出し」の差です(関数呼び出しを減らしていると考えてください)

Profile_s written by zigzagdribble 351日前

まだやってみてはいない

Profile_s written by yohjizzz 352日前

おぉ!

Profile_s written by ioioi 362日前

JavaScript

Profile_s written by bigchu 394日前

: 高速化

Profile_s written by hisasann 398日前

なんだかすごいぞ

Profile_s written by nomuran7 398日前

good!

Profile_s written by ringod 401日前

>> 以下の一行をすべての JavaScript の前に読み込む/*@cc_on _d=document;eval('var document=_d')@*/この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。

Profile_s written by sudo44ug 401日前

こいつはすげーぜ

Profile_s written by madamk 403日前

某SNSサイトにもおすすめしたい一品

Profile_s written by cx20 404日前

関連 → http://www.microsoft.com/japan/technet/prodtechnol/windows2000serv/technologies/iis/tips/asptips.mspx#E6CAC (頻繁に使用するデータをスクリプト変数にコピーする)

Profile_s written by petem 404日前

すごいらしい

Profile_s written by Lhankor_Mhy 404日前

なるほど、これは良い呪文。しかし、documentに直接10000回触ることなんてないだろうなあ。ループさせるなら変数にすること多そう。/あ、いや、with使ってる場合もあるか。

Profile_s written by linden 404日前

1000users越えなんて久しぶりに見たので内容も読まずに記念ブクマ。…ごめん、いま携帯電話からなんだ

Profile_s written by klangfarbe 405日前

js,javascript,tips,ie

Profile_s written by potappo 405日前

1000越えとか久々に見たような。内容に関してはなるほど。

Profile_s written by sweeper 405日前

一行でJavaScriptを高速化

Profile_s written by tsutoben 405日前

javascript

Profile_s written by y_press 405日前

これ、これすげ

Profile_s written by ryuzi_kambe 405日前

被ブックマーク数に便乗してこのエントリの SBM コメントの見え方を集めてみました。http://d.hatena.ne.jp/ryuzi_kambe/20071011/p8

Profile_s written by eyenote 405日前

覚えておこう

Profile_s written by takashiman 405日前

高速化 

Profile_s written by yoshiii 406日前

スピードアップ!

Profile_s written by nakakoh 406日前

高速化

Profile_s written by rsky 406日前

関数呼び出し → 変数

Profile_s written by ocaesar 406日前

これは使えそう

Profile_s written by cazmori 406日前

JSやってないけど凄いのでブクマー。

Profile_s written by yheld 406日前

amachang++

Profile_s written by nii 406日前

documentオブジェクトを変数に格納してしまう。

Profile_s written by uzuki-first 406日前

へええええ!これはすごい

Profile_s written by tanakaBox 406日前

IE限定らしい。

Profile_s written by msng 406日前

たとえ「ほとんどのウェブサイトでは効果はあまり感じられないかも」であったにしても、それはそれは興味深いよこれ。

Profile_s written by yoh596 406日前

赤いの以上

Profile_s written by poafag 406日前

JavaScript高速化

Profile_s written by tetracarbonyl 406日前

>この方法は document と書かれた部分を 5 倍以上(ループのコストを引くとたぶん 10 倍以上?)速くすることができるのですが、その数倍というのは「プロパティアクセス」と「関数呼び出し」の差です(関数呼び出しを減

Profile_s written by shokai 406日前

/*@cc_on _d=document;eval('var document=_d')@*/

Profile_s written by xondhi 406日前

試してみようかな。

Profile_s written by Marine-Blue 406日前

これはいいね。

Profile_s written by billy-elliot 406日前

"[javascript]"

Profile_s written by honeybe 406日前

早くなる。らしい。

Profile_s written by fashi 406日前

documentからwindowオブジェクトの内部メソッドが呼ばれるのを抑制

Profile_s written by WiiAreTheWorld 406日前

まさにこれはすごい

Profile_s written by ryouchi 406日前

そーなのかー。すごいねぇ

Profile_s written by tnai45 406日前

一行で IE の JavaScript を高速化する方法

Profile_s written by hiromark 406日前

80へぇ。

Profile_s written by polysweat 406日前

よく気付いたなー

Profile_s written by tnomura9 406日前

doc = document をあらかじめ実行

Profile_s written by sqrt 406日前

「僕の作ってるもの」がどんなものなのか激しく気になる。 このハックの効果がある時点で普通のツールじゃなさそう。

Profile_s written by se-mi 406日前

条件付コンパイル

Profile_s written by Dryad 406日前

コロンブスの卵。

Profile_s written by mingos 406日前

5倍速くなる

Profile_s written by nilab 406日前

IT戦記 - 一行で IE の JavaScript を高速化する方法:/*@cc_on _d=document;eval('var document=_d')@*/ :IE では document にそのままアクセスすると window オブジェクトの内部メソッドが実行されてしまう

Profile_s written by saladdays 406日前

5倍って!

Profile_s written by kitaj 406日前

5倍早いっつっても,たかが0.5秒.よく気付いたなー.パレートの法則的には,これが効くとは思えないが,手軽なのはいいね.

Profile_s written by lesamoureuses 406日前

/*@cc_on _d=document;eval('var document=_d')@*/普通に使ってるjsでどのくらい効果があるかだけど、すごいなぁ。

Profile_s written by ibushi 406日前

重いjsがあるんだけど、ためしに適用してみようか?

Profile_s written by denken 406日前

5倍速いvs10万ループで0.5秒速い

Profile_s written by sawat 406日前

100000回のdocument参照がおよそ0.5秒短縮される。これに気付くのがすごい。恩恵にあずかれるケースはほとんどないだろうけど。 ループ無しだと20倍ぐらいだった。逆に他の処理に埋もれて差がなくなりやすいとも言える。

Profile_s written by kuenishi 406日前

つhttp://twitter.com/bulkneets/statuses/327040472

Profile_s written by ume16 406日前

ブックマークレットとかにも使えるんかな

Profile_s written by send 406日前

自前でフレームワーク組んだり、でかいコードでない限りそんなに必要ないと思うけどGJ

Profile_s written by stch 406日前

試してみる&覚えておく > http://d.hatena.ne.jp/gyuque/20071014

Profile_s written by n2s 406日前

他のブラウザでは特に意味なさげ…かどうか要調査。

Profile_s written by sally0721 406日前

これは覚えておくととてもよい

Profile_s written by cal_diana 406日前

Profile_s written by leepz 406日前

へえ

Profile_s written by hitode909 406日前

これはおもしろい

Profile_s written by hiro_y 406日前

IE上でJavaScriptを高速化。

Profile_s written by Horiuchi_H 406日前

簡単なことだけど、なるほど・・・。しかし、それだけのことをやってないIEが一番問題な気もする・・・。

Profile_s written by asitaki 406日前

ただのメンバじゃなくてプロパティだからか

Profile_s written by p_chopin 406日前

『/*@cc_on _d=document;eval('var document=_d')@*/』

Profile_s written by daichan330 406日前

はてなスターというかAjaxで重すぎなはてな全般で取り入れるべきな希ガス

Profile_s written by fractured 406日前

目からeval

Profile_s written by stellarnight 406日前

何かすごいので一応ブクマ。普段IE使わないから自分ではあまり実感できないけど。

Profile_s written by matsuo_atsushi 406日前

"/*@cc_on _d=document;eval('var document=_d')@*/"

Profile_s written by hoehoe3 407日前

速くなるおまじない

Profile_s written by studio-m 407日前

これはすごい

Profile_s written by miya2000 407日前

「JavaScript では変数はスコープの先頭で生成される」→「javascript:(function(){var d;var document;d = document;document = d;})()」わかってたようでわかってなかった/<del>evalは気持ち悪いので</del>まちがい。

Profile_s written by kohiro0 407日前

/*@cc_on _d=document;eval('var document=_d')@*/

Profile_s written by use_this 407日前

これは素直に凄い。

Profile_s written by kixx_me_tender 407日前

最近JavaScriptの高速化が気になるココロ。あとでじっくり読もう。

Profile_s written by ag-commerce 407日前

/*@cc_on _d=document;eval('var document=_d')@*/この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。

Profile_s written by takebu002 407日前

スコープが云々がわからんので、要理解

Profile_s written by gokigendori 407日前

すげっ。。。。

Profile_s written by akky_cc 407日前

この1行の中身はまったくわかんないけどシャアよりすげーってことはわかりました。試してみよう

Profile_s written by kanehama 407日前

すげぇ

Profile_s written by igetanet 407日前

IEでは、documentアクセスは内部メソッドが実行されて高コストだから変数に入れとけ。プラス、evalの副作用を逆手にとったグローバル変数置き換えhack

Profile_s written by kamataro 407日前

documentを変数にすると実行時のオーバーヘッドが軽減される/evalでvar宣言すると変数宣言がスコープ先頭に移動しない

Profile_s written by ave_mayua 407日前

HTML

Profile_s written by mmonta2044 407日前

javascript 高速化

Profile_s written by mackey13 407日前

Profile_s written by heavenshell 407日前

JavaScript の高速化。

Profile_s written by nihongi 407日前

頭いい

Profile_s written by betelgeuse 407日前

あとでIEで比べる http://preview.tinyurl.com/htmya http://preview.tinyurl.com/2afwuo

Profile_s written by ajapo 407日前

グローバル変数アクセス高速化(IE専用)

Profile_s written by dsl 407日前

あとで試す

Profile_s written by pukada 407日前

五倍

Profile_s written by koemu 407日前

うっそー!すげー

Profile_s written by vanish_l2 407日前

amachang世界デビューかも。

Profile_s written by brazil 407日前

IE、高速化、←すごい、evalを使いdocumentを置き換え

Profile_s written by pc_nagomu 407日前

良くわからないけど、これが世界を変えるコードなのかな。わくわく。

Profile_s written by ab_c 407日前

Profile_s written by tosik 407日前

おお!

Profile_s written by bwhr 407日前

documentへのアクセスが重いんだってさ。

Profile_s written by kmachu 407日前

確かにこの手法に名前をつけたほうがいい気がする。

Profile_s written by MichaeL 407日前

/*@cc_on _d=document;eval('var document=_d')@*/ ブクマコメのvbで笑ったw

Profile_s written by shinfukui 407日前

これ、うまく動いた時嬉しかっただろうなぁ、amachang。それにしても、なんでwindowオブジェクト経由だとそんなに重くなるのか良くわからん…。ハッシュだからって話?ではないよね?「内部メソッド」ってのが鍵?kwsk

Profile_s written by andalusia 407日前

な、なによ。こんなのマークアップエンジニア達が有難がってるCSSのIEハックと同じで、短期的でアドホックな知識じゃない。ぜ、ぜんぜんすごいなんて思ってないんだからね!勘違いしないでよ!

Profile_s written by genkivogue 407日前

「言及リンクのないトラックバックを弾く」以来の驚き。

Profile_s written by kengo9999q 407日前

凄い勢いでブクマ

Profile_s written by Ayas 407日前

『/*@cc_on _d=document;eval('var document=_d')@*/』

Profile_s written by kasane_yuuhi 407日前

<q>/*@cc_on _d=document;eval('var document=_d')@*/ この一行を読み込むことによって IE での document へのアクセスが5倍速くなります。</q>

Profile_s written by KoshianX 407日前

覚えておこう

Profile_s written by gotin 407日前

IEの面倒見るのめんどい。。

Profile_s written by june29 407日前

/*@cc_on _d=document;eval('var document=_d')@*/

Profile_s written by snsn9pan 407日前

感動した! /*@cc_on _d=document;eval('var document=_d')@*/

Profile_s written by wacky 407日前

IEでdocumentへのアクセスが5倍速くなるおまじない。スコープ途中から変数を生成するテクニックを利用。

Profile_s written by th_6295 407日前

なるほど。言われてみればそんな気もするけど思いつけない。

Profile_s written by terurou 407日前

もはや魔法の域。わけわからんなぁ

Profile_s written by oldriver 407日前

後で検討する

Profile_s written by monjudoh 407日前

『IE での document へのアクセスが 5 倍速くなります。』これはすごい

Profile_s written by mathatelle 407日前

こういう発見はすごいな〜。すごすぎ。これをいかせるのは、どれくらいの規模のサイトなんだろ。というところが気になった。

Profile_s written by authorNari 407日前

試して無いけども

Profile_s written by boto 407日前

IEでしか効果がない。まぁ一見問題なさそうなのだが、今度やってみるか。

Profile_s written by t-murachi 407日前

Ω ΩΩΩ<ナ、ナンダッテーーッッッ!!!!

Profile_s written by staki 407日前

vbやった事ある人なら自然に沸く発想だったりする。理屈も同じなんじゃなかろうかと妄想。五倍ってのは中々無かったけど。

Profile_s written by adamrocker 407日前

IEでJavaScriptが約5倍速くなる超簡単な方法。documentへのアクセスを高速化します。IEではdocumentはwindowオブジェクトの内部メソッドが実行されるので変数として保存しておくという事です。

Profile_s written by akm 407日前

amachang

Profile_s written by os0x 407日前

また奇妙なおまじないを書く仕事が始まるお

Profile_s written by carrotsword 407日前

ありがとう先生!

Profile_s written by adsty 407日前

サンプルプログラムで計測したら確かに5倍くらい高速化された。どう実用に持っていくかは要検討だけど、確かにすごい発見。

Profile_s written by mallowlabs 407日前

これはIEの実装がアレなだけでは…?

Profile_s written by katzchang 407日前

ほえー

Profile_s written by samurai20000 407日前

よくみつけるなぁ。すげぇ

Profile_s written by poolmmjp 407日前

なるへそ

Profile_s written by korn_freak 407日前

これはすごい

Profile_s written by kkobayashi 407日前

そうなんだ・・・。それよりもどうやってそのボトルネックを見つけたんだろう

Profile_s written by suVene 407日前

/*@cc_on _d=document;eval('var document=_d')@*/

Profile_s written by ultraist 407日前

「内部メソッド」というのが呼ばれる理由があって呼ばれてそこで必要な処理を行っていると考えるのが自然だと思うけど、副作用とかないのかな。単にハッシュテーブルのアクセスが遅いとかじゃないよね。排他系?

Profile_s written by Sybian 407日前

var document=document;で試してみて速くなって喜んでたら関数内部でundefinedに。「変数はスコープの先頭で生成されるので」の原理はわからんが何がどうなるかは把握した。

Profile_s written by tomyhero 407日前

cool

Profile_s written by naskin 407日前

IE の JavaScript 高速化

Profile_s written by eclucifer 407日前

<q>/*@cc_on _d=document;eval('var document=_d')@*/ この一行を読み込むことによって IE での document へのアクセスが5倍速くなります。</q>

Profile_s written by tanku 407日前

なんぞこれー

Profile_s written by kabus 407日前

えー、なんでこんなの編み出せるんだ・・・

Profile_s written by Wacky 407日前

/*@cc_on _d=document;eval('var document=_d')@*/ この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。

Profile_s written by gan2 407日前

すご!

Profile_s written by teahut 407日前

>IE では document にそのままアクセスすると window オブジェクトの内部メソッドが実行されてしまいます。これが非常に重い... eval で var 宣言することでスコープ途中から変数を生成

Profile_s written by oooooooo 407日前

この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります → /*@cc_on _d=document;eval('var document=_d')@*/

Profile_s written by quintas 407日前

JavaScripterとして使わずにはおれまい

Profile_s written by HolyGrail 407日前

これはやばいな。

Profile_s written by polyman 407日前

eval(var document=d)

Profile_s written by sumiisan 407日前

ほんとかな?

Profile_s written by J2kawa 407日前

高速化も大事だが、この一行の中身を芯から理解することのほうがもっと重要。自分はまだ理解できてない。

Profile_s written by sharaku3eyes 407日前

Javascriptのdocumentを赤いMSに搭載

Profile_s written by ken_araki 407日前

一行で IE の JavaScript を高速化する方法

Profile_s written by bull2 407日前

evalするとスコープ途中で変数が宣言できるようになるって、やっぱりjavascriptって托イ言語だ。

Profile_s written by wang-zhi 407日前

さっそく導入する

Profile_s written by lurker 407日前

5倍はすごいなぁ

Profile_s written by mattn 407日前

これで遅いxpath.jsを試して見たい/var d=dankogai;eval("var dankogai=d");で添削速度5倍

Profile_s written by shidho 407日前

すごいのか。

Profile_s written by saz_go 407日前

documentへのアクセスを高速化。一行じゃないけど。

Profile_s written by SiroKuro 407日前

javascript life の hacks。これ普通に書いたら var doc;var document;doc=document;document=doc;になってundefinedなのかな。eval 入れてvar documentの位置をdoc=document;の後に変えてると予想。要調査

Profile_s written by usj12262 407日前

ホントに早い!スゴイ!びっくりした

Profile_s written by m-ohshita 407日前

37

Profile_s written by asiamoth 407日前

これはすごい! というか、これを見付けられるのがすごい。

Profile_s written by nitoyon 407日前

var doc=document;高速化テクを既存の資産を生かしたまま利用する。/誰かがdiggってamachangが世界にはばたく可能性を感じるエントリ。 → danさんが紹介した・・・はてさて・・・海外の反応やいかに。

Profile_s written by sirouto2 407日前

IE/documentに大量にアクセスする場合に高速化

Profile_s written by tk78 407日前

すごい!

Profile_s written by tsupo 407日前

/*@cc_on _d=document;eval('var document=_d')@*/

Profile_s written by tiga 407日前

今度試そう

Profile_s written by Yoshiori 407日前

IE高速化とevalのtips

Profile_s written by washita 407日前

仕組みはよくわからないけどつける。

[PR]アダルト画像を共有しませんか?