Evitar o uso de innerHTML ao esvaziar elementos DOM (ou qualquer outra coisa) pode aumentar muito o desempenho.
Dê uma olhada você mesmo: http://jsperf.com/innerhtml-vs-removechild/37
No Chrome 26, usar um while-loop para remover crianças era incrivelmente 400 vezes mais rápido! Estamos falando de um navegador para desktop!
Em vez de fazer isso
el.innerHTML = '';
para esvaziar seus elementos DOM, você deve usar este
while (el.firstChild) el.removeChild(el.firstChild);
que é, como eu disse, cerca de 400 vezes mais rápido do que o innerHTML em um navegador de desktop moderno.
Mesmo o uso de innerText para limpar o elemento DOM (conhecido por ser mais rápido do que innerHTML) não se compara e é um pouco mais de 10 vezes mais lento do que o loop while.