Какой движок использует опера?
вот тут
http://habrahabr.ru/post/175403/ написано: Цитата:
Я щас обновил оперу до 12.17 и вижу Browser identification Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.17 непонято, перешли они или нет? По скорости движка особ не заметно: на одной и той же странице я проверил оперу и хром -- разница в обработке скриптов огромная, явно разые движки. Или че там за магия происходит? |
Цитата:
|
devote,
Спасибо, да скачал -- оказалось таким же тормозным говном как и хром. Жаль. |
Лол. Чуви, то, что твой код тормозит под v8 еще не значит, что Хром — тормозное говно.
|
Хром - тормозное говно! Дискач?
|
ixth,
Я тут немного подумал, и понял причину тормозов того кода, более или менее. Там вот что происходит. Если запущен цикл, браузер не может обработать пользовательский ввод. то есть, я жму на клаву, и события эти становяться в очередь. Изнутри цикла ты не сможешь захватить действия пользователя, события. Тут тупиковый вариант, архитектурная лажа. Следовательно, цикл по любому выполняется, что в хроме, что в фф, где угодно. А это значит, что V8 отсасывает не на чем то там космическо-волшебном, а на банальной обработке массива. Попросту говоря, он не умеет массивы. Как вариант -- регекспы. А нахрен, спрашивается, такой двиг нужен, если он сосет на ключевых вещах? |
Ох, щи… Правильно написанный код под v8 иногда даже рвет (неоптимизированный) нативный C++, ЕМНИМС. Покажи мне тесткейсы, на которых v8 по-твоему сосет.
|
ixth,
Тот код, который мы обсуждали, является, по сути, таким примером. В старой опере и фф тормозов нет. А тормоза там именно из-за скорости перебора в массиве. Возможно регекспы там добавляют тормозов, но хрен редьки не слаще. |
Знаешь что меня забавляет? Наблюдать как люди вокруг вместо того чтобы скромно следовать заветам Сократа и считать, что они ничего не знают, сразу находят причину своих проблем снаружи. Это, кажется, называется ресентимент. Я написал код, который тормозит и мне лень пораскинуть мозгами? Это все браузер виноват! Я не понимаю декларативного подхода? Нет, это просто тупой шаблонизатор! Грустно, в общем. В итоге хорошие вещи обычно оказываются оплеваны людьми, которые даже не попытались научиться их готовить.
Твой код тормозил по распространенной причине: ты пытался запихнуть в innerHTML СЛИШКОМ много. Браузер просто давился, пересчитывая DOM и все, что с этим связано. Бла-бла-бла, даже я не вдаюсь в причины. Решение — использовать ф-цию replaceHTML, которая делает странное. Найдешь ее в обновленном коде. http://jsfiddle.net/ainop/g41x6tto/5/ |
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 -- нет. Никакой магии:) ЗЫ и причем тут декларативный подход ЯННП? |
Часовой пояс GMT +3, время: 07:46. |