以下の一行をすべての 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 ... 続きを読む
[PR]アダルト画像を共有しませんか?
コメント
d.hatena.ne.jp/amachang/20071010/1192012056
/*@cc_on _d=document;eval('var document=_d')@*/
高速化。ありがたくブクマさせていただきます
★IEでのdocumentへのアクセスを5倍速く
id:javascripter それってグローバルスコープで出来る?/javascript:var document=window.document;alert(document);
eval使わなくても、var document = window.documentで十分、YUIもそうしてる。/id:amachang グローバルだとjavascript:alert("hoge" in window);var hoge;がtrueで、記事と同じ状態になって駄目。document = documentもメンバが見つからないから駄目。
IEで高速化
javascript
使いどころによるらしい
javascript 高速化
/*@cc_on _d=document;eval('var document=_d')@*/
IEでJavaScriptを高速化する方法。
こ,こ,これは.すげー.
これはすごい…
document他、windowプロパティへのアクセスをIEで高速化させる方法。documentを直接呼ぶとあれこれコストがかかるが、一度変数なんかに入れておくと以降は直接オブジェクトにアクセスできるため早くなる、という事らしい。
はえー
「プロパティアクセス」と「関数呼び出し」の差です(関数呼び出しを減らしていると考えてください)
まだやってみてはいない
おぉ!
JavaScript
: 高速化
なんだかすごいぞ
good!
>> 以下の一行をすべての JavaScript の前に読み込む/*@cc_on _d=document;eval('var document=_d')@*/この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。
こいつはすげーぜ
某SNSサイトにもおすすめしたい一品
関連 → http://www.microsoft.com/japan/technet/prodtechnol/windows2000serv/technologies/iis/tips/asptips.mspx#E6CAC (頻繁に使用するデータをスクリプト変数にコピーする)
すごいらしい
なるほど、これは良い呪文。しかし、documentに直接10000回触ることなんてないだろうなあ。ループさせるなら変数にすること多そう。/あ、いや、with使ってる場合もあるか。
1000users越えなんて久しぶりに見たので内容も読まずに記念ブクマ。…ごめん、いま携帯電話からなんだ
js,javascript,tips,ie
1000越えとか久々に見たような。内容に関してはなるほど。
一行でJavaScriptを高速化
javascript
これ、これすげ
被ブックマーク数に便乗してこのエントリの SBM コメントの見え方を集めてみました。http://d.hatena.ne.jp/ryuzi_kambe/20071011/p8
覚えておこう
高速化
スピードアップ!
高速化
関数呼び出し → 変数
これは使えそう
JSやってないけど凄いのでブクマー。
amachang++
documentオブジェクトを変数に格納してしまう。
へええええ!これはすごい
IE限定らしい。
たとえ「ほとんどのウェブサイトでは効果はあまり感じられないかも」であったにしても、それはそれは興味深いよこれ。
赤いの以上
JavaScript高速化
>この方法は document と書かれた部分を 5 倍以上(ループのコストを引くとたぶん 10 倍以上?)速くすることができるのですが、その数倍というのは「プロパティアクセス」と「関数呼び出し」の差です(関数呼び出しを減
/*@cc_on _d=document;eval('var document=_d')@*/
試してみようかな。
これはいいね。
"[javascript]"
早くなる。らしい。
documentからwindowオブジェクトの内部メソッドが呼ばれるのを抑制
まさにこれはすごい
そーなのかー。すごいねぇ
一行で IE の JavaScript を高速化する方法
80へぇ。
よく気付いたなー
doc = document をあらかじめ実行
「僕の作ってるもの」がどんなものなのか激しく気になる。 このハックの効果がある時点で普通のツールじゃなさそう。
条件付コンパイル
コロンブスの卵。
5倍速くなる
IT戦記 - 一行で IE の JavaScript を高速化する方法:/*@cc_on _d=document;eval('var document=_d')@*/ :IE では document にそのままアクセスすると window オブジェクトの内部メソッドが実行されてしまう
5倍って!
5倍早いっつっても,たかが0.5秒.よく気付いたなー.パレートの法則的には,これが効くとは思えないが,手軽なのはいいね.
/*@cc_on _d=document;eval('var document=_d')@*/普通に使ってるjsでどのくらい効果があるかだけど、すごいなぁ。
重いjsがあるんだけど、ためしに適用してみようか?
5倍速いvs10万ループで0.5秒速い
100000回のdocument参照がおよそ0.5秒短縮される。これに気付くのがすごい。恩恵にあずかれるケースはほとんどないだろうけど。 ループ無しだと20倍ぐらいだった。逆に他の処理に埋もれて差がなくなりやすいとも言える。
つhttp://twitter.com/bulkneets/statuses/327040472
ブックマークレットとかにも使えるんかな
自前でフレームワーク組んだり、でかいコードでない限りそんなに必要ないと思うけどGJ
試してみる&覚えておく > http://d.hatena.ne.jp/gyuque/20071014
他のブラウザでは特に意味なさげ…かどうか要調査。
これは覚えておくととてもよい
へえ
これはおもしろい
IE上でJavaScriptを高速化。
簡単なことだけど、なるほど・・・。しかし、それだけのことをやってないIEが一番問題な気もする・・・。
ただのメンバじゃなくてプロパティだからか
『/*@cc_on _d=document;eval('var document=_d')@*/』
はてなスターというかAjaxで重すぎなはてな全般で取り入れるべきな希ガス
目からeval
何かすごいので一応ブクマ。普段IE使わないから自分ではあまり実感できないけど。
"/*@cc_on _d=document;eval('var document=_d')@*/"
速くなるおまじない
これはすごい
「JavaScript では変数はスコープの先頭で生成される」→「javascript:(function(){var d;var document;d = document;document = d;})()」わかってたようでわかってなかった/<del>evalは気持ち悪いので</del>まちがい。
/*@cc_on _d=document;eval('var document=_d')@*/
これは素直に凄い。
最近JavaScriptの高速化が気になるココロ。あとでじっくり読もう。
/*@cc_on _d=document;eval('var document=_d')@*/この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。
スコープが云々がわからんので、要理解
すげっ。。。。
この1行の中身はまったくわかんないけどシャアよりすげーってことはわかりました。試してみよう
すげぇ
IEでは、documentアクセスは内部メソッドが実行されて高コストだから変数に入れとけ。プラス、evalの副作用を逆手にとったグローバル変数置き換えhack
documentを変数にすると実行時のオーバーヘッドが軽減される/evalでvar宣言すると変数宣言がスコープ先頭に移動しない
HTML
javascript 高速化
JavaScript の高速化。
頭いい
あとでIEで比べる http://preview.tinyurl.com/htmya http://preview.tinyurl.com/2afwuo
グローバル変数アクセス高速化(IE専用)
あとで試す
五倍
うっそー!すげー
amachang世界デビューかも。
IE、高速化、←すごい、evalを使いdocumentを置き換え
良くわからないけど、これが世界を変えるコードなのかな。わくわく。
おお!
documentへのアクセスが重いんだってさ。
確かにこの手法に名前をつけたほうがいい気がする。
/*@cc_on _d=document;eval('var document=_d')@*/ ブクマコメのvbで笑ったw
これ、うまく動いた時嬉しかっただろうなぁ、amachang。それにしても、なんでwindowオブジェクト経由だとそんなに重くなるのか良くわからん…。ハッシュだからって話?ではないよね?「内部メソッド」ってのが鍵?kwsk
な、なによ。こんなのマークアップエンジニア達が有難がってるCSSのIEハックと同じで、短期的でアドホックな知識じゃない。ぜ、ぜんぜんすごいなんて思ってないんだからね!勘違いしないでよ!
「言及リンクのないトラックバックを弾く」以来の驚き。
凄い勢いでブクマ
『/*@cc_on _d=document;eval('var document=_d')@*/』
<q>/*@cc_on _d=document;eval('var document=_d')@*/ この一行を読み込むことによって IE での document へのアクセスが5倍速くなります。</q>
覚えておこう
IEの面倒見るのめんどい。。
/*@cc_on _d=document;eval('var document=_d')@*/
感動した! /*@cc_on _d=document;eval('var document=_d')@*/
IEでdocumentへのアクセスが5倍速くなるおまじない。スコープ途中から変数を生成するテクニックを利用。
なるほど。言われてみればそんな気もするけど思いつけない。
もはや魔法の域。わけわからんなぁ
後で検討する
『IE での document へのアクセスが 5 倍速くなります。』これはすごい
こういう発見はすごいな〜。すごすぎ。これをいかせるのは、どれくらいの規模のサイトなんだろ。というところが気になった。
試して無いけども
IEでしか効果がない。まぁ一見問題なさそうなのだが、今度やってみるか。
Ω ΩΩΩ<ナ、ナンダッテーーッッッ!!!!
vbやった事ある人なら自然に沸く発想だったりする。理屈も同じなんじゃなかろうかと妄想。五倍ってのは中々無かったけど。
IEでJavaScriptが約5倍速くなる超簡単な方法。documentへのアクセスを高速化します。IEではdocumentはwindowオブジェクトの内部メソッドが実行されるので変数として保存しておくという事です。
amachang
また奇妙なおまじないを書く仕事が始まるお
ありがとう先生!
サンプルプログラムで計測したら確かに5倍くらい高速化された。どう実用に持っていくかは要検討だけど、確かにすごい発見。
これはIEの実装がアレなだけでは…?
ほえー
よくみつけるなぁ。すげぇ
なるへそ
これはすごい
そうなんだ・・・。それよりもどうやってそのボトルネックを見つけたんだろう
/*@cc_on _d=document;eval('var document=_d')@*/
「内部メソッド」というのが呼ばれる理由があって呼ばれてそこで必要な処理を行っていると考えるのが自然だと思うけど、副作用とかないのかな。単にハッシュテーブルのアクセスが遅いとかじゃないよね。排他系?
var document=document;で試してみて速くなって喜んでたら関数内部でundefinedに。「変数はスコープの先頭で生成されるので」の原理はわからんが何がどうなるかは把握した。
cool
IE の JavaScript 高速化
<q>/*@cc_on _d=document;eval('var document=_d')@*/ この一行を読み込むことによって IE での document へのアクセスが5倍速くなります。</q>
なんぞこれー
えー、なんでこんなの編み出せるんだ・・・
/*@cc_on _d=document;eval('var document=_d')@*/ この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。
すご!
>IE では document にそのままアクセスすると window オブジェクトの内部メソッドが実行されてしまいます。これが非常に重い... eval で var 宣言することでスコープ途中から変数を生成
この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります → /*@cc_on _d=document;eval('var document=_d')@*/
JavaScripterとして使わずにはおれまい
これはやばいな。
eval(var document=d)
ほんとかな?
高速化も大事だが、この一行の中身を芯から理解することのほうがもっと重要。自分はまだ理解できてない。
Javascriptのdocumentを赤いMSに搭載
一行で IE の JavaScript を高速化する方法
evalするとスコープ途中で変数が宣言できるようになるって、やっぱりjavascriptって托イ言語だ。
さっそく導入する
5倍はすごいなぁ
これで遅いxpath.jsを試して見たい/var d=dankogai;eval("var dankogai=d");で添削速度5倍
すごいのか。
documentへのアクセスを高速化。一行じゃないけど。
javascript life の hacks。これ普通に書いたら var doc;var document;doc=document;document=doc;になってundefinedなのかな。eval 入れてvar documentの位置をdoc=document;の後に変えてると予想。要調査
ホントに早い!スゴイ!びっくりした
37
これはすごい! というか、これを見付けられるのがすごい。
var doc=document;高速化テクを既存の資産を生かしたまま利用する。/誰かがdiggってamachangが世界にはばたく可能性を感じるエントリ。 → danさんが紹介した・・・はてさて・・・海外の反応やいかに。
IE/documentに大量にアクセスする場合に高速化
すごい!
/*@cc_on _d=document;eval('var document=_d')@*/
今度試そう
IE高速化とevalのtips
仕組みはよくわからないけどつける。