10.08.2014, 20:36
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
Какой движок использует опера?
вот тут
http://habrahabr.ru/post/175403/
написано:
Цитата:
|
«Все наши новые продукты будут использовать движок WebKit для рендеринга и V8 для обработки JavaScript. Они будут основаны на опенсорсном браузере Chromium и его компонентах
|
статья датирована 4 апреля 2013 в 10:25
Я щас обновил оперу до 12.17 и вижу
Browser identification
Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.17
непонято, перешли они или нет? По скорости движка особ не заметно: на одной и той же странице я проверил оперу и хром -- разница в обработке скриптов огромная, явно разые движки. Или че там за магия происходит?
|
|
10.08.2014, 20:48
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от newobject
|
Я щас обновил оперу до 12.17 и вижу
|
это старая версия, качать нужно с сайта оперы там сейчас лежит 22-я или 23-я точно не скажу, но 12-я уже старая.
|
|
10.08.2014, 21:07
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
devote,
Спасибо, да скачал -- оказалось таким же тормозным говном как и хром. Жаль.
|
|
10.08.2014, 21:25
|
|
Профессор
|
|
Регистрация: 19.01.2010
Сообщений: 354
|
|
Лол. Чуви, то, что твой код тормозит под v8 еще не значит, что Хром — тормозное говно.
|
|
10.08.2014, 21:32
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
Хром - тормозное говно! Дискач?
__________________
29375, 35
|
|
10.08.2014, 21:32
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
ixth,
Я тут немного подумал, и понял причину тормозов того кода, более или менее. Там вот что происходит. Если запущен цикл, браузер не может обработать пользовательский ввод. то есть, я жму на клаву, и события эти становяться в очередь. Изнутри цикла ты не сможешь захватить действия пользователя, события. Тут тупиковый вариант, архитектурная лажа. Следовательно, цикл по любому выполняется, что в хроме, что в фф, где угодно. А это значит, что V8 отсасывает не на чем то там космическо-волшебном, а на банальной обработке массива. Попросту говоря, он не умеет массивы. Как вариант -- регекспы. А нахрен, спрашивается, такой двиг нужен, если он сосет на ключевых вещах?
Последний раз редактировалось newobject, 10.08.2014 в 21:37.
|
|
10.08.2014, 23:00
|
|
Профессор
|
|
Регистрация: 19.01.2010
Сообщений: 354
|
|
Ох, щи… Правильно написанный код под v8 иногда даже рвет (неоптимизированный) нативный C++, ЕМНИМС. Покажи мне тесткейсы, на которых v8 по-твоему сосет.
|
|
10.08.2014, 23:34
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
ixth,
Тот код, который мы обсуждали, является, по сути, таким примером. В старой опере и фф тормозов нет. А тормоза там именно из-за скорости перебора в массиве. Возможно регекспы там добавляют тормозов, но хрен редьки не слаще.
|
|
10.08.2014, 23:55
|
|
Профессор
|
|
Регистрация: 19.01.2010
Сообщений: 354
|
|
Знаешь что меня забавляет? Наблюдать как люди вокруг вместо того чтобы скромно следовать заветам Сократа и считать, что они ничего не знают, сразу находят причину своих проблем снаружи. Это, кажется, называется ресентимент. Я написал код, который тормозит и мне лень пораскинуть мозгами? Это все браузер виноват! Я не понимаю декларативного подхода? Нет, это просто тупой шаблонизатор! Грустно, в общем. В итоге хорошие вещи обычно оказываются оплеваны людьми, которые даже не попытались научиться их готовить.
Твой код тормозил по распространенной причине: ты пытался запихнуть в innerHTML СЛИШКОМ много. Браузер просто давился, пересчитывая DOM и все, что с этим связано. Бла-бла-бла, даже я не вдаюсь в причины. Решение — использовать ф-цию replaceHTML, которая делает странное. Найдешь ее в обновленном коде.
http://jsfiddle.net/ainop/g41x6tto/5/
|
|
11.08.2014, 01:13
|
Профессор
|
|
Регистрация: 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.
|
|
|
|