On Apr 2, 2008, at 16:21, Henri Sivonen wrote:
It was a problem for me when I tried to walk the HTML5 spec in
Firefox 1.5 using iterative traversal with firstChild/nextSibling/
parentNode. Firefox 1.5 performed a *lot* worse than the then-
current versions of Opera and Safari. And the spec was a lot smaller
back then, too. :-)
It turns out that I still have the test case around:
http://hsivonen.iki.fi/test/dom-walk-perf.html
I think it is perfectly reasonable to expect this algorithm to be the
fast way to walk when you see a tree with first child, sibling and
parent references:
function walk(node) {
var current = node;
var next = null;
for (;;) {
if (next = current.firstChild) {
current = next;
continue;
}
break;
for (;;) {
if (next = current.nextSibling) {
current = next;
break;
}
current = current.parentNode;
if (current == node) {
return;
}
}
}
}
With Element Traversal, I think it would be reasonable to expect the
above algorithm to be the fast way to walk the elements when s/
firstChild/firstElementChild/ and s/nextSibling/nextElementSibling/.
--
Henri Sivonen
[EMAIL PROTECTED]
http://hsivonen.iki.fi/