2007-11-05 (Mon)
XPath id() 関数を使った高速化
XPath には Core 関数として id 関数があります。
id 属性を持つ要素ノードセットを取得するために、class 属性などを持つ要素に対してと同じく attribute 軸を使った式を書く人が多く見られますが、以下の例のように id() 関数を使うことで同じ処理を高速化させることが出来ます。(手元のベンチマーク環境で約 1.5 倍前後)
例:
<div id="hoge"> <p>この要素を取得したい</p> </div>
| id() 関数非利用 | id() 関数利用 | |
|---|---|---|
| XPath 式 | /descendant-or-self::div[attribute::id='hoge']/child::p | id('hoge')/child::p |
| XPath 式 (省略記法) | //div[@id='hoge']/p | id('hoge')/p |
GreaseMonkey などにおける XPath や CSS Selector は定数的に書くことが多いですから、最適化できるところは早めにしてしまいましょう。
他の高速化記述についてはまた別エントリで。
コメントを書く