2016-09-30 50 views
1

如果我用Javascript创建了很多DOM元素,将它们添加到documentFragment然后将该片段添加到文档中,提供了比将它们添加到未添加元素的元素更高的性能,然后将该元素添加到DOM ?即documentFragment性能与appendChild on unattached元素?

var el; 
var i = 0; 
var fragment = document.createDocumentFragment(); 

while (i < 2000) { 
    el = document.createElement('li'); 
    el.innerText = 'This is my list item number ' + i; 
    fragment.appendChild(el); 
    i++; } 

document.appendChild(fragment); 

var el; 
var i = 0; 
var container = document.createElement('div'); 

while (i < 2000) { 
    el = document.createElement('li'); 
    el.innerText = 'This is my list item number ' + i; 
    container.appendChild(el); 
    i++; } 

document.appendChild(container); 

(注:这只是一个简单的例子,在我实际的代码我增加了许多表行和表元素)

感谢

回答

1

从第一原则我会推测,使用实际的包装元素应该是一样快,甚至比DocumentFragment更快。加速可能是因为需要较少的工作来通知突变观察者,并且必须将一个节点附加到子列表而不是将其拆分,并将其所有子代移动到列表中。它实际上取决于底层的数据结构。阵列比绳索结构具有更高的弹性。

如果你想成为某些你必须写一个基准测试它在所有主要的浏览器,并偶尔重新测试新版本的发布,因为它们的实现改变。

那么,你甚至没有说你使用的是浏览器。还有其他的DOM实现。