Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加/删除与编辑DOM的Javascript基准?_Javascript_Dom_Benchmarking - Fatal编程技术网

添加/删除与编辑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元素的问题。你可能有兴趣看看我后来写的关于它的帖子。谢谢你的回答!谢谢你的回答!