为什么IE 9在这个DOM基准测试中如此之慢?

时间:2011-10-13 15:47:07

标签: javascript dom internet-explorer-9

1 个答案:

答案 0 :(得分:0)

我看到的最大问题是索引testIndex功能,它在你的截图中在IE9中只需要超过8秒。以下复制的内容仅供参考。

function testIndex(div) {
    for (var i = 0; i < count; i += 1) {
        divs[i] = div.childNodes[count*2 - i*2 - 1];
    }
}

请注意divs是一个包含10000个索引的数组。

这个功能正在发生一些事情,我认为减速发生的原因是IE以外的浏览器优化了这些类型的DOM操作和计算缓存。我认为问题的一部分是这个函数与其他函数不同,它将它找到的内容的副本添加到divs数组中。因此它会抓取DOM,将找到的对象复制到数组中。在抓取DOM时,IE从未如此快速。尝试以下操作,看看有什么区别。

function testIndex(div) {
    var doublecount = (count*2) -1;
    for (var i = 0; i < count; i += 1) {
        div.childNodes[doublecount - i*2];
    }
}

这可能会加快速度。