文字列からDOMの構築にかかる時間
tumblr経由でGreasemonkeyスクリプトのGM_xmlhttpRequestとかで取得したhtmlとかxmlをいじる場合はxpathだと遅いことが多いかも – さらさら宇宙忍法帖を読んで
というのと、実際の時間は2000ms vs 200msほどなんで、2秒待てる処理なら多少遅くたっていいじゃん、ってのもあるかもしれないです。いや2秒と0.2秒は体感できる違いだなぁ。。
体感でさすがに2秒もかかってない気がした(DOMの構築は同期的に行われるのでその間UIがフリーズするはずだけど、そういうストレスを感じてない)けどどれくらいかかっているのかも知らなかったので調べてみました。
実験
- 評価環境
- 2.16GHz/Core2Duo OSX10.4+Firefox3beta3
- 評価方法
- AutoPagerize 0.23で文字列からDOMを構築している
createHTMLDocumentByStringの実行にかかっている時間をFirebugのconsole.time()+console.timeEnd()で測定
比較的こみいったHTMLになっているはてなブックマーク – 注目エントリーだと80msくらいでした。シンプルなHTMLのajax – Google 検索の場合10~15msくらい。
ついでにXPathのマッチングをしているところ、
var page = getElementsByXPath(this.info.pageElement, htmlDoc)
var url = this.getNextURL(this.info.nextLink, htmlDoc)
も測ってみました。はてなブックマークで3msでgoogle検索結果だと1msでした。XPathの評価はほとんど時間がかからないと思ってよさそう。FirefoxのXPathEvaluatorでもたしかにそんな感じのオーダーだった。
結論
DOMの構築はHTMLの複雑さにもよるけど10~100msのオーダーで終了する。AutoPagerizeは
document.createRange().createContextualFragment(str)
で文字列をDOMにしてるけど、元の記事ではinnerHTMLで変換したときの時間っぽいのでその差とかなのかも。
About this entry
You’re currently reading “文字列からDOMの構築にかかる時間,” an entry on ku
- Published:
- 2008.03.02 / 11pm
- Category:
- DOM, Firefox, experiments, javascript

No comments
Jump to comment form | comments rss [?] | trackback uri [?]