Hatena::Groupsubtech

ういはるかぜの化学

Friday, October 12, 2007

Internet ExplorerのDocumentプロパティが遅いわけの推測 01:53  Internet ExplorerのDocumentプロパティが遅いわけの推測 - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  Internet ExplorerのDocumentプロパティが遅いわけの推測 - ういはるかぜの化学

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

多分ActiveScriptエンジンにはwindowオブジェクトがグローバルオブジェクト(SCRIPTITEM_GLOBALMEMBERS)として登録されていて、

スクリプト「document がほしいです」
↓
エンジン「document はグローバルな window についてるのかね」
↓
エンジン「ホストさん window をください」
↓
ホスト(IE)「はいはいwindow window」 (IActiveScriptSite::GetItemInfo)
↓
エンジン「さて window をもらったから document をもらうかな」
↓
エンジン「windowさん、document ありますかね」
↓
window(ホスト/IE)「これですか(documentの中身、get_Documentが返す値)」(IDispatch)
↓
エンジン「documentの中身もらたよー>スクリプト」
↓
スクリプト「ゲトー」

というやりとりの結果documentの中身を得られるんだと思います。

で、var _d = document; eval("var document = _d"); は苦労して手に入れた結果をスクリプトエンジンさんの中に保持するので、当然返すのは速くなるわけですね。

「documentほしいんだけど」「あ、ここにあるよ」

基本的にIEオブジェクト(windowとかDOM要素とか)はCOMベースだから常にこのやりとりが発生していると思います。

まあ正しいかどうかは怪しいですが、だいたいこんな感じなんじゃないかなーとかなんとか。間違ってたらきっと誰か詳しい人が指摘してくれる!

http://d.hatena.ne.jp/gyuque/20071013 あわせてよみたい。

というか同じことを思ったのでC++を使わない人間として、C#JScript.NETで試していたのですがなぜか死ぬほど遅かったのでそれはそれで要調査(なので書くことができなかった)。

JaikuIRCGateway 欲しい! 19:49  JaikuIRCGateway 欲しい! - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  JaikuIRCGateway 欲しい! - ういはるかぜの化学

やはりIRCで見れるのはつよい。

まあ、このエントリはてなスターユニークユーザ数で25たまったら考えてもいいですよ(とかいう。

連打すると見づらくなるのでご遠慮ください><

sakadonsakadon2007/10/12 20:22> 連打すると見づらくなるのでご遠慮ください><、

ごめんwww

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20071012