Показать сообщение отдельно
  #10 (permalink)  
Старый 11.08.2014, 01:13
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

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 -- нет. Никакой магии

ЗЫ и причем тут декларативный подход ЯННП?

Последний раз редактировалось newobject, 11.08.2014 в 01:43.
Ответить с цитированием