【问题标题】:Why is IE 9 so slow at this DOM benchmark? [closed]为什么 IE 9 在这个 DOM 基准测试中这么慢? [关闭]
【发布时间】:2011-10-13 15:47:07
【问题描述】:

【问题讨论】:

  • 因为 IE 很烂。
  • @Matt Ball:没看到那个来了;)
  • 如果不包括您在问题中测试的代码,一旦您删除演示页面,它将对未来的读者毫无用处。如果你不是在问你是否在做一些可以优化的事情,那么真的没什么问题。
  • @Ryan:你到底希望得到什么样的答案?详细程度如何?
  • @inflagranti 我想有人可能知道不同浏览器处理相同代码的方式之间的差异。看起来 hradac 在下面有一个想法。

标签: javascript dom internet-explorer-9


【解决方案1】:

我看到的最大问题是索引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,将找到的对象复制到一个数组中。 IE 在爬取 DOM 时从未如此快速。试试下面的,看看有什么不同。

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

这可能会加快速度。

【讨论】:

    猜你喜欢
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多