IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

XPath は実用に耐えうるかの考察と xpath.js

背景><

ということで、以下のことを試してみたい!!

で、こんなページを作ってみた

説明
  • XPath の様々な式を実行してパフォーマンスを計測します。
  • Time の単位はミリ秒です。
  • パフォーマンスの計測自体は重いのでじーっと見ててください。(XPath 自体が重い訳ではありません)
  • Internet Explorer の場合は条件付きコメントで xpath.js が組み込まれます。
  • 他のブラウザで見た時は、ネイティブの document.evaluate が使われます。
  • xpath.js はそのままでは使えなかったので 1200 行目をいじって case insensitive で動くように改造しました。

考察

xpath.js ってどうよ?
  • かなり重い(ネイティブ実装ブラウザの 20 〜 200 倍)。最初 200 倍と書いていたが、色々なパターンを計測してみて修正。
  • Predicate Expression を評価するときのコンテキストがおかしい。
  • 兄弟系の軸の取得がおかしい。
  • でも、かなり奇麗にコードが書かれていて、ライセンス的に書き換え可能なので、自分で直すのはあり。
  • 局所的な小さな DOM ツリーに使う分にはいけるかなあ。。。
ブラウザのネイティブの XPath ってどうよ?
  • ここまで、パフォーマンスがいいとは思わなかった!XPath 最強!いやまじで!だって、「これ普通に処理したらどんだけ重いんだよ」って処理だって XPath だと 0.2 ms とかで出来ちゃうんだもん!
  • Internet Explorer 8 で XPath が実装されるかどうかかなり注目! MSXML では XPath は使えるので、今後 HTML のほうに実装されることは十分にありえる。

まとめ

この夏は XPath が熱い!!