Что-то я не понял. Вот так видно, что кеширование коллекций какое-то есть, скорее всего (причем именно в FF, в Опере 10.60 все время тратится что-то на выборку, хотя сама она и происходит значительно быстрее):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Some test</title>
<script type="text/javascript">
<!--
function _init() {
var fragment = document.createDocumentFragment();
for (var i = 100000; i--; ) {
fragment.appendChild(document.createElement('DIV'));
}
document.body.appendChild(fragment);
}
function _test() {
var arr = [],
results = document.getElementById('results'),
start = (new Date()).getTime();
// Get collection
var elems = document.getElementsByTagName('DIV'),
l = elems.length;
results.appendChild(document.createTextNode('Find: ' +
((new Date()).getTime() - start) +
'ms\n'));
// Push
start = (new Date()).getTime()
while (l) {
arr.push(elems[--l]);
}
results.appendChild(document.createTextNode('Push: ' +
((new Date()).getTime() - start) +
'ms\n\n'));
}
//-->
</script>
</head>
<body onload="_init()"><button onclick="_test()">Test</button><pre id="results"></pre></body>
</html>