Мне нужно создать сценарий потока, который вставляет 1000 элементов в секунду в разных столбцах, когда количество достигает 30 элементов на столбец, я удаляю их.Низкая производительность при вставке большого количества динамических элементов DOM
Я заметил, что могу использовать CSS для вставки моих данных, поскольку количество элементов DOM замедляется, если я скажу 100 столбцов и 50 строк в каждом; и весь процесс становится изменчивым.
Я создаю элементы и сохраняю их в массиве, чтобы улучшить производительность.
Как выполнить эту задачу с лучшей производительностью в чистом JavaScript?
https://jsfiddle.net/r7qpmd4o/4/
<script>
var elems = [],
buffer = 1000,
temp_row,
temp_col,
temp_var;
// run
create();
clock();
function clock() {
setInterval(function() {
for(var i = 0; i < 10; i++) {
temp_col = document.getElementById('col' + i);
temp_row = pop();
if(temp_col.firstChild) {
temp_col.insertBefore(temp_row, temp_col.firstChild);
}
else {
temp_col.appendChild(temp_row);
}
if(temp_col.childNodes.length > 30) {
temp_col.removeChild(temp_col.childNodes[30]);
}
}
}, 1);
}
function pop() {
if(elems.length < 1) {
create();
}
temp_var = elems[elems.length -1];
elems.pop();
return temp_var;
}
function create() {
for(var i = 0; i < buffer; i++) {
temp_row = document.createElement('div');
temp_row.className = 'a';
elems.push(temp_row);
}
console.log('Elems created: ' + buffer);
}
</script>
Я собирался предложить использовать DocumentFragment ... но я заблудился, пытаясь увидеть, если это будет вообще выгодно –
насчет вместо того, один таймер, чтобы каждый столбец имел свой собственный таймер? Будет ли это работать лучше или хуже? – HelpNeeder