【发布时间】:2012-01-21 07:57:18
【问题描述】:
据说DOM遍历成本高,尽量避免。 但是,我认为通过 id 检索 DOM 元素的成本必须非常低,因为大多数浏览器可能都有一个表格,它在内部将元素与 id 关联起来。 所以几乎总是,我们可以忽略这个操作的性能成本。 这是错的吗?
谢谢。
【问题讨论】:
-
能否建议您创建一个测试用例,然后访问JS Perf 自己测试?
标签: javascript
据说DOM遍历成本高,尽量避免。 但是,我认为通过 id 检索 DOM 元素的成本必须非常低,因为大多数浏览器可能都有一个表格,它在内部将元素与 id 关联起来。 所以几乎总是,我们可以忽略这个操作的性能成本。 这是错的吗?
谢谢。
【问题讨论】:
标签: javascript
Chrome 和 Firefox 似乎为 ID 创建了一个映射,但至少在 ie8 看来,Explorer 似乎仍然存在性能问题。 Mike Blandford 运行了一些基准测试,至少表明 IE 没有使用数组映射,因此它的性能受到了严重影响:
JavaScript: document.getElementById slow performance?
引用:
以下是结果(对于包含 10,000 个元素的页面):
IE8 getElementById:0.4844 毫秒 IE8 id 数组查找:0.0062 毫秒
Chrome getElementById:0.0039 毫秒 Chrome id 数组查找:0.0006 毫秒
他接着说 FF 与 chrome 非常相似。当然,在大多数情况下,0.5ms 几乎不用担心,但对于大型树和频繁调用来说,它可能会成为一个问题(有人指出,您可以使用 JS 为基于 ID 的元素创建缓存系统,这将显着改善在某些浏览器中的性能)。
【讨论】: