添加/删除与编辑DOM的Javascript基准?
可能重复:添加/删除与编辑DOM的Javascript基准?,javascript,dom,benchmarking,Javascript,Dom,Benchmarking,可能重复: 我需要更改一千个,只有两个属性。删除/添加整个,还是仅仅更改属性更“便宜”?在目标浏览器中,使用Javascript实现这一点最便宜的方法是什么(无泄漏,GC尽可能少)。但鉴于更改属性通常不需要回流(显然取决于属性是什么,它们如何影响样式的应用等)而且不需要更改DOM节点之间的链接,我希望更改属性的速度更快。替换内容需要拆下旧的DOM节点,创建新的节点,将它们挂接到DOM中 至于如何做,这有点取决于如何识别div,但无论如何,这将是一个简单的循环。例如,在任何现代浏览器上: var
我需要更改一千个
,只有两个属性。删除/添加整个
,还是仅仅更改属性更“便宜”?在目标浏览器中,使用Javascript实现这一点最便宜的方法是什么(无泄漏,GC尽可能少)。但鉴于更改属性通常不需要回流(显然取决于属性是什么,它们如何影响样式的应用等)而且不需要更改DOM节点之间的链接,我希望更改属性的速度更快。替换内容需要拆下旧的DOM节点,创建新的节点,将它们挂接到DOM中
至于如何做,这有点取决于如何识别div,但无论如何,这将是一个简单的循环。例如,在任何现代浏览器上:
var divs = document.querySelectorAll("selector for the divs");
var index;
var div;
for (index = 0; index < divs.length; ++index) {
div = divs[index];
div.setAttribute(/*...*/);
div.setAttribute(/*...*/);
}
var divs=document.querySelectorAll(“divs选择器”);
var指数;
var-div;
对于(索引=0;索引
如果属性被反映为属性,您可能希望使用反射属性来避免setAttribute
函数调用。例如,div.id=“value”代码>而不是div.setAttribute(“id”、“value”)代码>。但我打赌这是过早的优化。在目标浏览器中,但鉴于更改属性通常不需要回流(显然取决于属性是什么、它们如何影响样式的应用等),并且不需要更改DOM节点之间的链接,我倾向于期望更快地更改属性。替换内容需要拆下旧的DOM节点,创建新的节点,将它们挂接到DOM中
至于如何做,这有点取决于如何识别div,但无论如何,这将是一个简单的循环。例如,在任何现代浏览器上:
var divs = document.querySelectorAll("selector for the divs");
var index;
var div;
for (index = 0; index < divs.length; ++index) {
div = divs[index];
div.setAttribute(/*...*/);
div.setAttribute(/*...*/);
}
var divs=document.querySelectorAll(“divs选择器”);
var指数;
var-div;
对于(索引=0;索引
如果属性被反映为属性,您可能希望使用反射属性来避免setAttribute
函数调用。例如,div.id=“value”代码>而不是div.setAttribute(“id”、“value”)代码>。但我敢打赌这是过早的优化。如果我被迫猜测,我会说仅仅更改属性可能更便宜-特别是如果它们是不会导致视觉变化的属性。@AnthonyGrist他们会进行视觉变化。我将尝试自己对其进行基准测试。不久前我问了一个类似的问题:更改属性显然是4%的快。我回答了一个关于以较小延迟更新许多DOM元素的问题。你可能有兴趣看看我后来写的关于它的帖子。如果我被迫猜测,我会说仅仅更改属性可能更便宜-特别是如果它们是不会导致视觉变化的属性。@AnthonyGrist他们会进行视觉变化。我将尝试自己对其进行基准测试。不久前我问了一个类似的问题:更改属性显然是4%的快。我回答了一个关于以较小延迟更新许多DOM元素的问题。你可能有兴趣看看我后来写的关于它的帖子。谢谢你的回答!谢谢你的回答!