ixth,
Я уж не знаю, как этот чувачок там тестировал ЭТО, но мои тесты кагбэ не подтверждают, мягко говоря, его позицию. Видимо не случайно ссылка с реальными тестами у него ведет в никуда, а выложены только результаты. Вот мои результаты:
ff:
replace: 125ms
inner: 47ms
chrome:
replace: 191.000ms
inner: 91.000ms
opera:
replace: 257.000ms
inner: 116.000ms
старая опера:
replace: 445ms (445010µsec)
inner: 250ms (250109µsec)
<html>
<head>
<title>Untitled</title>
</head>
<body>
<div id="id"><div>
<script>
test=function(fu, i){
console.time(fu.name)
while(i--){fu()}
console.timeEnd(fu.name)
}
function replaceHtml(el, html) {
var oldEl = typeof el === "string" ? document.getElementById(el) : el;
/*@cc_on // Pure innerHTML is slightly faster in IE
oldEl.innerHTML = html;
return oldEl;
@*/
var newEl = oldEl.cloneNode(false);
newEl.innerHTML = html;
oldEl.parentNode.replaceChild(newEl, oldEl);
/* Since we just removed the old element from the DOM, return a reference
to the new element, which can be used to restore variable references. */
return newEl;
};
str="fooooooooooooooooooovvvvvmvmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmddssmxmxmxmxm"
function replace(){replaceHtml("id", str)}
function inner(){document.getElementById("id").innerHTML=str}
i=10000
test(replace, i)
test(inner, i)
</script>
</body>
</html>
По сабжу: новый код ничуть визуально не отличается от предыдущих версий: на V8 тормозит ввод. Что не удивительно: на других двигах ко времени ввода следующего символа цикл успевает закончится, а на тормозном V8 -- нет. Никакой магии
ЗЫ и причем тут декларативный подход ЯННП?