3:14 - document.evaluateの最後の引数
var l = 10000, xp = null;
console.time("reuse");
for (var i=0; i<l; i++) {
xp = document.evaluate('//a', document, null, 0, xp);
}
console.timeEnd("reuse");
console.time("null")
for(var i=0; i<l; i++){
xp = document.evaluate('//a', document, null, 0, null);
}
console.timeEnd("null");
reuse: 4625ms null: 5687ms
$gと、nisefastforward5修正しておいた。
ちなみに、Mozilla1.8だとこのへん。
aInResultってのが第5引数で、do_QueryInterfaceした後、なければ作るみたいな処理をしてる。
XPath式の内容や、コンテキストノードの指定などとは関係ないみたい。