2016-09-30 46 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實現。