Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.08.2014, 20:36
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 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
непонято, перешли они или нет? По скорости движка особ не заметно: на одной и той же странице я проверил оперу и хром -- разница в обработке скриптов огромная, явно разые движки. Или че там за магия происходит?
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2014, 20:48
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от newobject
Я щас обновил оперу до 12.17 и вижу
это старая версия, качать нужно с сайта оперы там сейчас лежит 22-я или 23-я точно не скажу, но 12-я уже старая.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 10.08.2014, 21:07
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

devote,
Спасибо, да скачал -- оказалось таким же тормозным говном как и хром. Жаль.
Ответить с цитированием
  #4 (permalink)  
Старый 10.08.2014, 21:25
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Лол. Чуви, то, что твой код тормозит под v8 еще не значит, что Хром — тормозное говно.
Ответить с цитированием
  #5 (permalink)  
Старый 10.08.2014, 21:32
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Хром - тормозное говно! Дискач?
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 10.08.2014, 21:32
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

ixth,
Я тут немного подумал, и понял причину тормозов того кода, более или менее. Там вот что происходит. Если запущен цикл, браузер не может обработать пользовательский ввод. то есть, я жму на клаву, и события эти становяться в очередь. Изнутри цикла ты не сможешь захватить действия пользователя, события. Тут тупиковый вариант, архитектурная лажа. Следовательно, цикл по любому выполняется, что в хроме, что в фф, где угодно. А это значит, что V8 отсасывает не на чем то там космическо-волшебном, а на банальной обработке массива. Попросту говоря, он не умеет массивы. Как вариант -- регекспы. А нахрен, спрашивается, такой двиг нужен, если он сосет на ключевых вещах?

Последний раз редактировалось newobject, 10.08.2014 в 21:37.
Ответить с цитированием
  #7 (permalink)  
Старый 10.08.2014, 23:00
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Ох, щи… Правильно написанный код под v8 иногда даже рвет (неоптимизированный) нативный C++, ЕМНИМС. Покажи мне тесткейсы, на которых v8 по-твоему сосет.
Ответить с цитированием
  #8 (permalink)  
Старый 10.08.2014, 23:34
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

ixth,
Тот код, который мы обсуждали, является, по сути, таким примером. В старой опере и фф тормозов нет. А тормоза там именно из-за скорости перебора в массиве. Возможно регекспы там добавляют тормозов, но хрен редьки не слаще.
Ответить с цитированием
  #9 (permalink)  
Старый 10.08.2014, 23:55
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Знаешь что меня забавляет? Наблюдать как люди вокруг вместо того чтобы скромно следовать заветам Сократа и считать, что они ничего не знают, сразу находят причину своих проблем снаружи. Это, кажется, называется ресентимент. Я написал код, который тормозит и мне лень пораскинуть мозгами? Это все браузер виноват! Я не понимаю декларативного подхода? Нет, это просто тупой шаблонизатор! Грустно, в общем. В итоге хорошие вещи обычно оказываются оплеваны людьми, которые даже не попытались научиться их готовить.

Твой код тормозил по распространенной причине: ты пытался запихнуть в innerHTML СЛИШКОМ много. Браузер просто давился, пересчитывая DOM и все, что с этим связано. Бла-бла-бла, даже я не вдаюсь в причины. Решение — использовать ф-цию replaceHTML, которая делает странное. Найдешь ее в обновленном коде.

http://jsfiddle.net/ainop/g41x6tto/5/
Ответить с цитированием
  #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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Как получить index изображения? jeysmook jQuery 29 17.02.2013 14:58
Какой javascript движок мне следует взять? sirjay Общие вопросы Javascript 12 09.11.2012 14:22
Актуальный на сегодня 3D - javascript движок? aRpi Элементы интерфейса 0 17.09.2012 11:10
Опера вешает комп намертво при включенном JS. Хелп! extrim-style Javascript под браузер 25 06.07.2012 00:17