URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 86430
[ Назад ]

Исходное сообщение
"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."

Отправлено opennews , 12-Сен-12 14:30 
Разработчики Mozilla сообщили (https://blog.mozilla.org/javascript/2012/09/12/ionmonkey-in-.../) о миграции JavaScript-движка экспериментальной ветки Firefox на IonMonkey (https://wiki.mozilla.org/Platform/Features/IonMonkey), JIT-компилятор следующего поколения, который позволит значительно повысить производительность JavaScript приложений за счёт использования нового метода JIT-компиляции и  передовых техник оптимизации. Первым релизом, перешедшим на  IonMonkey, станет Firefox 18, выход которого запланирован на начало января.


Одним из ключевых новшеств IonMonkey является система вероятностной оценки типов, в рамках которой предложен гибридный метод статического и динамического анализа, позволяющий точно сопоставить типы для каждой переменной и каждого свойства JavaScript-программы. Напомним, что JavaScript является языком с динамической типизацией, с одной стороны это предоставляет большую гибкость для разработчиков, но с другой стороны создает трудности при создании JIT-компиляторов. Так как невозможно заранее определить какой тип данных будет содержаться в переменной, возникают трудности при  сопоставлении переменной с определенными фиксированными инструкциями, рассматривающими эту переменную, например, как строку или число. IonMonkey сделал существенный шаг вперёд в плане решения данных проблем и позволил избавиться от выполнения большого числа дополнительных проверок в процессе работы JavaScript-программы.


Другим важным улучшением является использование адаптивных методов выбора той или иной техники оптимизации для выполняемого JavaSvript-кода. Если JIT-компиляторы первых двух поколений (TraceMonkey и JägerMonkey) поддерживали только прямую однонаправленную трансляцию JavaScript в машинные инструкции, то  IonMonkey дополнительно снабжён средствами для обратной связи, позволяющими оценить эффективность результата выполнения сгенерированных инструкций и при необходимости внести корректировки и оптимизации, учитывающие особенности JavaScript-кода.


Архитектура IonMonkey разделена на три компонента: трансляция JavaScript в промежуточное представление (IR), применение различных алгоритмов к IR и трансляция финального IR в машинный код. Подобное разделение значительное увеличило гибкость работы JIT-компилятора и упростила сопровождение кода и его доработку. Например, добавление новых алгоритмов оптимизации теперь напоминает написание плагинов.


Среди других улучшений можно отметить: задействование техники LICM (Loop-Invariant Code Motion) для выноса инструкций за пределы циклов; поддержка метода GVN (Global Value Numbering) для ликвидации избыточного кода; реализация линейной схемы распределения регистров LSRA  (Linear Scan Register Allocation), применяемой также в таких проектах, как HotSpot JVM и  LLVM; поддержка DCE (Dead Code Elimination) для удаления неиспользуемого кода; новый анализатор границ, позволяющий обойтись без лишних проверок выхода за границы буфера. В настоящее время IonMonkey поддерживает генерацию кода для архитектур i386, x86_64, и ARM.

Итогом проделанной работы стало значительное повышение производительности выполнения кода JavaScript. При выполнении тестового комплекта Kraken (http://krakenbenchmark.mozilla.org/) Firefox 18 с IonMonkey показал прирост производительности на 26%, по сравнению с Firefox 15 и тестовой версией Firefox 17.
<center><a href="https://blog.mozilla.org/javascript/files/2012/09/chart_2.pn... src="https://www.opennet.ru/opennews/pics_base/0_1347445330.png" style="border-style: solid; border-color: #606060; border-width: 15x;" title="" border=0></a></center>

В тесте V8 benchmark Firefox 18 опередил Firefox 17 на 7%, а текущий релиз Firefox 15 на 20%.


<center><a href="https://blog.mozilla.org/javascript/files/2012/09/chart_1.pn... src="https://www.opennet.ru/opennews/pics_base/0_1347445365.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border=0></a></center>


URL: https://blog.mozilla.org/javascript/2012/09/12/ionmonkey-in-.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=34814


Содержание

Сообщения в этом обсуждении
"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 14:35 
Имея старый, просто таки древний комп (на работе) я таки вижу только увеличение тормозов, поюзал плюнул вернулся на 3.6 те сайты что мне нужны работают как часики!

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Даум , 12-Сен-12 14:43 
А ФФ 2 работает ещё лучше!

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 02:33 
Ну тогда лучше вспомнить про FF1. Хотя лучше тогда нарыть самый ранний mozilla suite.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено ваноним , 12-Сен-12 15:36 
исправления ошибок безопасности удалось бэкпортировать?

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 16:49 
Я вот всё жду когда же они начнут собирать с SSE2, чтоб желающие запускать свежий фокс на древней рухляди наконец свалили куда-нибудь подальше. И да, я «увеличения тормозов» на своей двухядерной рухляди пятилетней давности не вижу. По сравнению с 3.6 отзывчивость просто прекрасная. 3.6 же у меня еле ворочался с моей историей, закладками и всем прочим. Голый-то он летал.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено pupseg , 13-Сен-12 15:34 
Двухядерная рухлядь? Да ты зажрался.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 18:29 
поработай месяц

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 13-Сен-12 19:24 
> Двухядерная рухлядь? Да ты зажрался.

Дешёвый двухядерный процессор + материнка + память стоят копейки сейчас. Особенно б/у. Посмотри на форуме своего города — наверняка кто-то продаёт.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено abom , 13-Сен-12 23:13 
Дорого однако. У меня ноут с 4 пнем и как бы проблем не испытываю. Потому как виртуальные машины на серваке никто не отменял, а Х-ы в себе содержат сетевой протокол.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 16-Сен-12 09:06 
> Двухядерная рухлядь? Да ты зажрался.

Нынче 2 и даже 4 ядра бывает даже в телефонах. Все-таки 2012 год а не 2002 нынче. Впрочем, как правило 2-ядерные системы рухлядью не являются.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 21:40 
> Я вот всё жду когда же они начнут собирать с SSE2

Use AMD64, Luke! Там SSE2 - гарантирован. Процов с AMD64 без SSE2 просто не было, поэтому компиляция под AMD64 означает и юзеж SSE2 заодно.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 14-Сен-12 01:41 
У меня убунтовская 64-битная версия. ХЗ как она собрана.
Но я не затем жду, чтоб скорости получить, скорость меня устраивает. :)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 16-Сен-12 09:12 
> У меня убунтовская 64-битная версия. ХЗ как она собрана.

Так же как и все остальное, скорее всего. Ну разве что убунтуи любят таким вещам подтягивать секурити еще. Подробнее тут: about:buildconfig

> Но я не затем жду, чтоб скорости получить, скорость меня устраивает. :)

Ах, вы не любите некроманов? Используйте осиновые колья и серебряные пули, говорят помогает :)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено me , 15-Сен-12 16:10 
gentoo ждет тебя

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 15-Сен-12 22:16 
> gentoo ждет тебя

Я уже говорил тут, что скорость меня не волнует. Вон там выше. ↑
В крайнем случае я фокс пересоберу если они и к 18й версии GStreamer не включат по-умолчанию.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Антон , 12-Сен-12 17:20 
> только увеличение тормозов, поюзал плюнул вернулся на 3.6

... плюнул и поставил SeaMonkey, работает как часики! =)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено 1q2w3e , 12-Сен-12 20:53 
Вернулся на Оперу. За те полтора года что я пользовался FF они наконец-то починили ее крахи под Линуксом (из-за них и ушел). Вот где скорость отзывчивости! Доволен как слон.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 00:28 
полтора года чинить крахи - это да, скорость отзывчивости девелоперов во всей красе

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 02:34 
> полтора года чинить крахи - это да, скорость отзывчивости девелоперов во всей красе

А еще опера нынче тормознее лиса и хрома в плане работы с KS и отстает в реализации новых фич :D.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 13-Сен-12 05:53 
Если не гонять какие-нибудь браузерные игры - незаметно совершенно. Зато памяти жрёт меньше и по отзывчивости она существенно лучше файрфокса и тем более хрома начиная вкладок с 50. А без модных анимашек я уж как-нибудь проживу.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 19:56 
еще скажите, что и все сайты (а не только Яндекс) корректно открывает и не крэшится

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 13-Сен-12 21:19 
> еще скажите, что и все сайты (а не только Яндекс) корректно открывает
> и не крэшится

ты просто не поверишь…


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 13-Сен-12 21:41 
> ты просто не поверишь…

Тебе - не поверю. Ты наверное за пределы пары сайтов вообще не высовываешься. Гики они такие, да :)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 13-Сен-12 22:44 
> Ты наверное за пределы пары сайтов вообще не высовываешься.

да ну, прон есть на гораздо большем количестве сайтов, чем два.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 16-Сен-12 09:13 
> да ну, прон есть на гораздо большем количестве сайтов, чем два.

Ну да, там опера если и упадет - то только потому что сплойт не осилил экзотичную гиковскую конфигурацию прошибить, будучи ориентирован на хомячков :)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 15-Сен-12 04:09 
Я по "модным" сайтам не особо брожу, но то, где бываю - вроде бы всё работает.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено gabin , 13-Сен-12 13:43 
Крахи то как раз и не починили. А памяти стало жрать нереально много, даже если ограничивать memory cache. Например установил значение кеша в 140 МБ , при этом памяти отжирало 500 МБ , и загрузка процессора 28%. И это при 10 вкладках. Крешится Опера стабильно . За часа 2 работы как минимум раз упадёт. Это на линуксе.
Сижу на ней только из-за удобного сервиса синхронизации

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 15:01 
УМВР, у меня Опера не падает. Жрет памяти прилично, это да, но память для того и покупается, чтобы ее использовать на кэши и прочие вещи, ускоряющие работу. Толку-то от "экономной" лисы, если с большим количеством вкладок она начинает просто тормозить.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 21:43 
> прочие вещи, ускоряющие работу. Толку-то от "экономной" лисы, если с большим
> количеством вкладок она начинает просто тормозить.

В лисе есть удобнй аддон NoScript, чтобы вырубить фоновые JS, после чего при куче вкладок все работает как часики. А в опере ничего сравнимого по удобству вообще нет. А в паре с адблокплюсом - еще и рекламе хана. У оперы опять же нет ничего сравнимого по функционалу.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 13-Сен-12 22:46 
> А в опере ничего сравнимого по удобству вообще нет.

есть. открываем настройки, отрываем все «плугины» и весь «js». всё, ура, ничего не тормозит.

ах, да: если сайт не работает без js — тем хуже для сайта. в блокер его, чтобы больше время не тратить на этот хлам.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Crazy Alex , 15-Сен-12 04:11 
Там вроде в персональных настройках для сайта можно включить было

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 15-Сен-12 04:18 
> Там вроде в персональных настройках для сайта можно включить было

можно. но зачем?

правда, при отключеном js умирают и юзерскрипты и расширения, поэтому пришлось запилить себе простенький аналог noscript. в общем-то оно несложно, средства есть. а вот зачем нужны «плугины» — я не знаю. равно как и «онлайн-видео».


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Crazy Alex , 15-Сен-12 15:55 
эм... ну вот чтобы на опеннете комментарии раскрывались аяксом и в форуме ответ с цитированием работал. В общем, если без js работает - это ж не значит что всегда надо обходиться, главное чтобы оно было в разумных пределах.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 15-Сен-12 17:04 
> эм… ну вот чтобы на опеннете комментарии раскрывались аяксом и в форуме
> ответ с цитированием работал.

первое нафиг не надо. а второе если без js не работает — то это @#$@%%!ц.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 15-Сен-12 18:55 
сначала за себя ответь а потом говори нужно оно или нет

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 16-Сен-12 09:17 
> есть. открываем настройки, отрываем все «плугины» и весь «js». всё,
> ура, ничего не тормозит.

Угу, и половина сайтов не работает.

> ах, да: если сайт не работает без js — тем хуже для
> сайта. в блокер его, чтобы больше время не тратить на этот хлам.

Да ну нафиг, недостаточно радикально. Лучше со Столлмана пример брать: если сайт не открывается телнетом - забываем о нем. Юзать проприетарную затычку для того чтобы в ней гшольный хтмл смотреть - маразм вообще. Особенно при 2 живых открытых браузерных движках.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 16-Сен-12 13:22 
>> есть. открываем настройки, отрываем все «плугины» и весь «js». всё,
>> ура, ничего не тормозит.
> Угу, и половина сайтов не работает.

каких? а, понял: фкантагтег, аднаклассники, мордокнига. не нужны.

> Да ну нафиг, недостаточно радикально.

ты можешь поступать радикальней — разве я запрещаю?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 13-Сен-12 16:36 
> . За часа 2 работы как минимум раз упадёт.

интересно, как этого можно добиться. работает неделями, не падает. о! видимо, у тебя всякие ненужные флэши включены? выключи.

p.s. полнотекстовый поиск по истории тоже не нужен, полезно вырубать.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 16-Сен-12 09:20 
> тебя всякие ненужные флэши включены? выключи.
> p.s. полнотекстовый поиск по истории тоже не нужен, полезно вырубать.

А если браузер не запускать - станет вообще хорошо. Хотя лучше совсем не включать компьютер. На всякий случай. Для надежности надо отключить питание: без питания выжрать оперативку - задача вообще нетривиальная :)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 16-Сен-12 13:18 
а, любитель смотреть флешерекламу. тогда не жалуйся.

p.s. да, ты не поверишь: фичи жрут память. правда, удивительно? и почему они не могут «как-нибудь так»?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 13-Сен-12 19:28 
Так в фоксе тоже есть сервис синхронизации. Или он неудобный?

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Даум , 12-Сен-12 14:36 
Хорошо, скорость - это то, что сейчас больше всего нужно для ФФ.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Xasd , 12-Сен-12 14:54 
> Ага. Как всегда скорость повышается за "счет использования возможностей процессоров последнего поколения"...

и где здесь проблема?

что ты имеешь против возможностей процессоров последнего поколения?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Даум , 12-Сен-12 14:58 
В деньгах всё дела, типа я такой со старым компом и вы все должны быть на моём уровне и под меня всё делать. С другой стороны сейчас многие программные продукты действительно клали на оптимизацию в чём-либо.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено анонимус , 12-Сен-12 15:52 
Дело то не в том, что делать под кого-то со старым компом - дело в том, что современные приложения требуют при равных условиях больше ресурсов для выполнения задач на одних и тех же входных данных нежели их предыдущие версии

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Xasd , 12-Сен-12 16:45 
> дело в том, что современные приложения требуют при равных условиях больше ресурсов для выполнения задач на одних и тех же входных данных нежели их предыдущие версии

эт что ещё за те же входные данные? 6 лет назад Javascript вообще использовалься для целей типа бегущая строка в title-сайта :-D . и прочие сугубо УКРОШАТЕЛЬСТВА (а не для целей прикладных полезных функций).

а о том что будут хоть-сколько-комфортные web-приложения -- в 2006 году можно было только мечтать [каждое web-приложение 2006-года постоянно обновляло свою страничку при любом говнодействии пользователя]


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 16:59 
>эт что ещё за те же входные данные?
>6 лет назад Javascript вообще использовалься для целей типа
>бегущая строка в title-сайта :-D . и прочие сугубо УКРОШАТЕЛЬСТВА (а не для целей >прикладных полезных функций).

Там ему и место


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 17:04 
> Там ему и место

Вот как-раз там ему вообще не место.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 17:09 
>Вот как-раз там ему вообще не место.

Ну тогда для ботнетов там всяких лучше не придумаеш


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 17:22 
> Ну тогда для ботнетов там всяких лучше не придумаеш

Ни разу ботнетов на JS не видел, да и для установки идиоту этой дряни JS не нужен. Достаточно фэйкового порно-торрент-трекера… который отдаёт exe-файлы вместо torrent-ов. И ботнет тебе обеспечен.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 17:01 
лучше бы на этом и остановились

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 17:02 
Зато теперь в браузере запускают Linux.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено artem.stecenko , 12-Сен-12 17:50 
Вы несёте чушь, с учетом того что я в Google Mail зарегистрирован с начала 2006 года. А он изначально был на AJAX-е.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 02:34 
> УКРОШАТЕЛЬСТВА

Укрощательства :)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 19:58 
>> УКРОШАТЕЛЬСТВА
> Укрощательства :)

Укрэшательства :))



"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 21:44 
> Укрэшательства :))

Укрощательства укрэшательств :P


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 13-Сен-12 16:41 
> а о том что будут хоть-сколько-комфортные web-приложения — в 2006 году можно
> было только мечтать

да и сейчас то же самое. ну неудобен этот ваш браузер в качестве замены «обычного десктопного» софта, неудобен.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 13-Сен-12 17:00 
чем же?

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 13-Сен-12 17:04 
> чем же?

всем.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 13-Сен-12 21:46 
> да и сейчас то же самое. ну неудобен этот ваш браузер в
> качестве замены «обычного десктопного» софта, неудобен.

Обалденная аргументация. Хотя если ты о потугах заменить вебапликухами обычные - да, это криво. Но перенять некоторые их фичи вебу не помешало бы.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 13-Сен-12 22:33 
> Обалденная аргументация.

разговор об этом даже на опеннете уже был неоднократно. в очередной раз доказывать, что кубические колёса плохо подходят для массового автомобиля — мне лень.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 13-Сен-12 23:23 
Не лень тебе а не можешь, но вякаешь)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 14-Сен-12 01:41 
ну ок, не могу. теперь тебе стало лучше и ты будешь крепче спать? на здоровье.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 16-Сен-12 09:30 
> разговор об этом даже на опеннете уже был неоднократно. в очередной раз
> доказывать, что кубические колёса плохо подходят для массового автомобиля — мне лень.

Как бы что хорошо подходит для массового автомобиля в основном определяет рынок. Рынок достаточно благосклонен к HTML5 и его возможностям. По факту довески типа сильверлайта и флеша просто издохли на фоне данной перспективы. Куда и дорога.

Тебе могут до упора нравиться паровые машины, но в роли автомобиля у них фатальный недостаток: долго ждать растопки котла. За это их и заменили бензиновые. Хоть дрова и были дешевле и не требовали никакой промышленной базы. По той же самой причине AJAX, вебсокеты и прочие SPDY постепенно выпнут классическую модель с запрос - ждем полчаса - грузим еще полчаса огромную простыню. Долго и неудобно.  


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 16-Сен-12 13:19 
ты Одепт Невидимой Руки Рынка или просто глупый со своим «определяет рынок»?

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 15:27 
Многопоточность там нужна нормальная. Тормозов при браузинге и так не наблюдается уж давно.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 16:52 
> Многопоточность там нужна нормальная. Тормозов при браузинге и так не наблюдается уж
> давно.

Многопоточность там давно уже есть и весьма хорошая, в htop посмотри, например, нажав там F5. Вот многопрцессности, как в Хроме, нет… и не надо.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 17:06 
Конечно, не надо. Ведь тогда не получится в каждом релизе рапортовать, что устранены утечки памяти. Зачем прерывать многолетнюю традицию?
А если серьезно, системный менеджер памяти лучше справляется с освобождением памяти нежели тот "велосипед", что изобретают мозиловцы.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 17:11 
> А если серьезно, системный менеджер памяти лучше справляется с освобождением памяти нежели
> тот "велосипед", что изобретают мозиловцы.

Вот только есть одна проблема — вы же первый взвоете почему фокс на 10 вкладках начал жрать в несколько раз больше памяти, чем раньше. Большие расходы памяти это как-раз проблема многопроцессной модели. Разве что отдают всю сразу, а не передают эту задачу сборщику мусора. А ещё дополнительная нагрузка на процессор для организации общения процессов между собой. Лучше пусть утечки лечат.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 13-Сен-12 05:54 
Ну-ну. Только хром при этом жрёт памяти больше файрфокса в разы. Интересно, с чего бы это...

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Воин ЗОГа , 13-Сен-12 11:41 
Надо же где-то в ОЗУ хранить собранную о пользователе информацию перед отправкой на сервер. По крайней мере, это единственное объяснение существования "Процесса GPU", потребляющего 56 Мбайт в простое на системе без поддержки аппаратного ускорения видео.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Человек , 12-Сен-12 14:59 
И вовсе не грандиозное увеличение производительности.
Наверняка это нарушит кучу тупых америкосовских софтовых патентов.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Zenitur , 12-Сен-12 15:28 
Да сколько ж можно-то?! Intel с их EXA, UXA, SNA и GLAMOR - ничто по сравнению с тем как Mozilla меняет движок JavaScript.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 15:37 
Intel делает это довольно быстро и никто не страдает, хотя и бывают регрессии в отношении производительности на некотором их видео, но они не заставят никого переписывать софт. А тут таки проблема может возникнуть, и даже пнуть потом некого, кроме Лисы.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Sergey , 13-Сен-12 08:43 
Я страдаю. Это д*мо трапается. То на GE то на Marble, теперь стало даже на xrestop.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 21:48 
> Я страдаю. Это д*мо трапается. То на GE то на Marble, теперь
> стало даже на xrestop.

Может, вы что-то делаете не так? Почему у меня ничего не трапается? Вы случайно не гентушник, собирающий весь софт с -O9?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 13-Сен-12 22:47 
> с -O9?

выше O3 продлолжается O3.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 16-Сен-12 09:38 
>> с -O9?
> выше O3 продлолжается O3.

Наверное вы имели в виду ПродЛажается ;). Есть класс граждан упоротых на коНпелировании. Они не особо понимают что делают ключи компилера но втыкают в параметры компиляции все что по их мнению относится к оптимизации. А потом идут в багтрекер и слезно вещают что вот, нас тут укусил жуткий баг вашей программы. На поверку оказывается что баг - у одного дурика на всю планету, в силу общей ж@порукости. Вот я и пытаюсь выяснить - не такой ли это случай. Просто странно если у всех работает а у кого-то бац и наворачивается на ровном месте. Такое конечно иногда бывает, но если бы это было фундаментальным свойством браузера - программерский мозг давно бы уже скушали хомячки.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 16-Сен-12 13:24 
>> выше O3 продлолжается O3.
> Наверное вы имели в виду ПродЛажается ;).

опечатка, конечно, но разве плохое слово вышло? «продЛОЛжается». мне даже понравилось.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 02:35 
> Да сколько ж можно-то?!

Нет предела совершенству. Поэтому да, столько сколько получится и столько сколько будет нужно.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 15:31 
всеравно медленее v8, чтоб с ним тягаться надо раза в 2-2.5 поднимать

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 15:19 
> всеравно медленее v8, чтоб с ним тягаться надо раза в 2-2.5 поднимать

Неправда, см. http://arewefastyet.com/ В кракене новый движок уже обогнал V8.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 15:26 
Ну не знаю как они там тестят, а я сам проверяю, на элементарных циклах, ветвлениях, выражениях, фокс заметно отстает, причем чем больше время теста тем это заметно сильнее.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 16:06 
Впрочем извиняюсь, ситуация быстро меняется) пару недель назад сравнивал 14 фокс с нодой, было как сказал, сейчас прогнал пару тестов на 15 фоксе и 0.8.9 ноде - равны, а 21 хром вообще слил в полтора раза) Война однако, не уследишь) По большому счету наверное все это фигня когда в условиях постоянной гонки ктото немного отрывается, завтра глядишь его настигли, а послезавтра и черт не знает что будет)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 13-Сен-12 16:44 
синтетические тесты — говно.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 16-Сен-12 09:41 
> синтетические тесты — гoвно.

..и только Кэп с отключенным JS весь в белом :)

Не забывай дописывать сам, какого черта я должен твои фразы за тебя дописывать?!


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 16-Сен-12 13:20 
> Не забывай дописывать сам, какого черта я должен твои фразы за тебя
> дописывать?!

а почему я один должен трудиться? и ты поработай.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 21:49 
> Неправда, см. http://arewefastyet.com/ В кракене новый движок уже обогнал V8.

...но не в V8bench...


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 15-Сен-12 13:32 
Во-первых там всё равно не вдвое, а во-вторых - этот тест, судя по всему, с самого начала разрабатывался так, чтобы показать ерутость v8, и объективность его несколько под сомнением. Это не знасит, что стремиться не надо - но и париться на этот счёт я бы тоже не стал.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 16-Сен-12 09:44 
> Во-первых там всё равно не вдвое, а во-вторых - этот тест, судя
> по всему, с самого начала разрабатывался так, чтобы показать ерутость v8,
> и объективность его несколько под сомнением. Это не знасит, что стремиться
> не надо - но и париться на этот счёт я бы тоже не стал.

Так поэтому и надо смотреть на различных тестах. Но в целом JS в хроме порезвее. Что не мешает лисе его местами натягивать. У любого двигуна есть сильные и слабые стороны. Вон doom на JS на хроме вообще тупил дико из-за бага в хроме. А в лисе вполне себе работал...


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 15:32 
> передовых техник оптимизации

Это они про кеширование всего подряд в оперативе что ли?

По копейкам оптимизируют раход памяти в течение релизов, уменьшают оное процентов на 15, а потом БАЦ, новая "оптимизация", и памяти уже требуется в несколько раз больше, чем раньше.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено XoRe , 12-Сен-12 23:14 
>> передовых техник оптимизации
> Это они про кеширование всего подряд в оперативе что ли?
> По копейкам оптимизируют раход памяти в течение релизов, уменьшают оное процентов на
> 15, а потом БАЦ, новая "оптимизация", и памяти уже требуется в
> несколько раз больше, чем раньше.

Грабь, убивай, комментируй не читая!


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 15:53 
Браузер в дерьмо превращается. Имею на ноуте 8гб оперативы, оставил на ночь почтовый клиент, скайп и фаирфокс, утром получил сообщение что свободной оперативы не осталось, все выжрал фаирфокс. Повторил процедуру на следующий день, сообщений не появилось, зато перезапустить фаирфокс не получилось без киляния процесса вручную. Каждый день гамнище какое-то.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Капитан , 12-Сен-12 16:11 
> оставил на ночь почтовый клиент, скайп и фаирфокс

чтобы дрова рубили, пока админ спит?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 16-Сен-12 09:51 
>> оставил на ночь почтовый клиент, скайп и фаирфокс
> чтобы дрова рубили, пока админ спит?

Биткоины считали :)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено SKAtina , 12-Сен-12 16:14 
Бред полный. Тут явно проблема не в файрфоксе, а в каком-то из установленных плагинов.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноным , 12-Сен-12 16:30 
2 чашки чая этому господину.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 16:55 
> Бред полный. Тут явно проблема не в файрфоксе, а в каком-то из
> установленных плагинов.

Или расширений. Из плагинов так шутит обычно только флэш и только потому, что забывает выгружать видео из памяти, идиот он такой.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Xasd , 12-Сен-12 16:54 
> оставил на ночь почтовый клиент, скайп и фаирфокс, утром получил сообщение что свободной оперативы не осталось, все выжрал фаирфокс

что за такое сообщение? как мне его полчить? откуда оно вообще появляется?

часто оставляю на ночь комп (да и вообще не выключаю полностью никогда.. максимум в sleep перевожу) но такой вот фигни не наблюдал.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Zenitur , 12-Сен-12 18:47 
Поддерживаю. Зимой создавал тему об этом: http://www.linux.org.ru/forum/talks/7273029

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 21:55 
> Поддерживаю. Зимой создавал тему об этом: http://www.linux.org.ru/forum/talks/7273029

Файрфоксу приписано только 400 метров RSS. Куда остальное жрется - хороший вопрос. И какую именно свободную память показывает этот манагер процессов? Он буфера считает за таковую или нет?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 21:52 
> Каждый день гамнище какое-то.

У вас или засраный профайл, или кривые аддоны. Или просто какая-то веб-страница дико борзеет. Сам по себе лис подобными проблемами не страдает. Ну вот например 15-я лиса, пущена неделю назад. Жрет какие-то 800Mb RSS на 100500 вкладок. Не вижу криминала.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено savant , 12-Сен-12 16:50 
На какие только извращения не пойдёшь, чтобы ускорить нечто тормозное by design

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 16:58 
> На какие только извращения не пойдёшь, чтобы ускорить нечто тормозное by design

У Хрома тоже шустрый JS движок. Даже шустрее фокса. Хром тоже тормозной по-дизайну, раз ему такой движок сделали?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 17:21 
> Хром тоже тормозной по-дизайну, раз ему такой движок сделали?

Не Хром, а парадигма создания тяжёлых программных интерфейсов на связке HTML+JavaScript. HTML предназначен для вёрстки текста, а JavaScript - для маленьких и лёгких программ. Он же не типизированный и не компилируется (значит, не проверяется статически).


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 17:25 
> не компилируется (значит, не проверяется статически).

Давно уже динамически компилируется, а теперь ещё и динамически типизируется. Хром, кстати, типизацию уже давно умеет.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноным , 12-Сен-12 17:28 
Интересно, а есть ли смысл мутить какой-нить режим, который нужно будет самому руками активировать и в котором нужно будет самому руками всё типизировать?

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 17:31 
> Интересно, а есть ли смысл мутить какой-нить режим, который нужно будет самому
> руками активировать и в котором нужно будет самому руками всё типизировать?

Так уже замутили — opalang.org


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноным , 12-Сен-12 17:36 
И от этих костылей на самом же жабаскрипте растёт производительность? Я имел ввиду на уровне движка. Вон у в ECMAScript 5 есть режим "use strict".

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено www2 , 12-Сен-12 19:53 
Это кто-то Perl переименовал что-ли?

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 17:34 
Не надо ничего активировать и все типизировать, просто в тех местах где надо/критично пользуйтесь типизированными контейнерами, где не надо - можете не пользоваться, при этом нетипизированные места движок постарается за вас оттипизировать автоматически.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 12-Сен-12 18:10 
У типизациии есть плюсы и кроме скорости. Самый жирный - это лишний уровень документации. Вот здесь арбузы храним а здесь - попугаев. По типам это сразу видно. Ну и что не сложишь арбузы с попугаями - тоже хорошо.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 23:27 
> У типизациии есть плюсы и кроме скорости. Самый жирный - это лишний
> уровень документации. Вот здесь арбузы храним а здесь - попугаев. По
> типам это сразу видно. Ну и что не сложишь арбузы с
> попугаями - тоже хорошо.

Ещё проверка. В общем, в любом случае, в JS, как правило, не используется статическая компиляция. А это значит, что не производится даже убогий компиляционный статический анализ.

Это совершенно необязательная вещь, когда программы маленькие, когда всё умещается на страничку. Но если программы диких размеров, то тут стат. анализ крайне желателен.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 00:11 
Если программы диких размеров то тут не статанализ желателен а биореактор

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 13-Сен-12 01:52 
> Если программы диких размеров то тут не статанализ желателен а биореактор

Вы вообще смотрели размер исходников хоть одной программы, на которой работаете?

И, кстати, знаете ли вы какой объём JS кода качается туда-сюда при загрузке GMail?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 02:39 
Не путайте общий объем и размер модуля

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 13-Сен-12 05:57 
Только без типов модуль не имеет внятного интерфейса, ему запросто можно скормить любую чушь и не заметить.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 10:01 
Нельзя, ибо он это проверяет динамически.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 13-Сен-12 10:18 
> Нельзя, ибо он это проверяет динамически.

Если при тестировании какая-то ветвь не сработала (скажем очень редка), проверит он это только в работе. И долбанётся у пользователя.

Статические проверки хороши тем, что они проверяют всё, все ветви программы. Даже те, что выполняются раз в 2 года. А с помощью одних динамических проверок вы за два дня тестирования не пройдёте по таким веткам. В результате, они долбанутся у клиента.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 11:36 
Формальный синтаксис проверяется полностью и в динамических языках, а вот что касается логических ошибок в ходе исполнения, то ситуация в статике не лучше - точно также может быть неверный код вызывающий ошибку не проявляющийся при первом тестировании.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 13-Сен-12 12:59 
> Формальный синтаксис проверяется полностью и в динамических языках,

Мы с вами немножечко смешали две "фичи" JS, неприятные на больших проектах - динамическую систему типов и интерпретацию.

Из-за интерпретации формальный синтаксис у JS проверяется только там, где происходит выполнение. У статически компилируемых языков все ветви проверяются на стадии компиляции. Уж хотя бы по синтаксису, а чаще и ещё глубже.

> а вот что касается логических ошибок в ходе исполнения, то ситуация в статике не лучше

Почему же? Если не использовать массивы и другие хаки, то можно быть уверенным в том, что левый тип передан не будет. То есть, то, что вы получите структуру ровно такого размера/объёма, какую заказывали.

В большинстве мест в программе массивы не передаются => вы уже от серьёзной части ошибок избавились.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 13:49 
> Из-за интерпретации формальный синтаксис у JS проверяется только там, где происходит выполнение.

Ну здаровьте живете, если на JS не пишите то чего говорите то? Во первых он не интерпретируется а компилируется, во вторых синтаксис таки проверяется везде:

if (true) {
  alert(1);
}
else {
  alert(2;
}

Ошибка: SyntaxError: missing ) after argument list - alert(2;

Почему же? Если не использовать массивы и другие хаки, то можно быть уверенным в том...

Массивы это хаки? Выдыхай бобер) Это очень часто используемая конструкция, дело даже не в их передаче а в работе с ними, например очень часто приходится работать с кусками памяти, выделять из нее значения накладывая структуры и приводя типы, так вот если вы гденить размер какогонить поля в структуре измените без соответствующего рефакторинга остальных кусков, то нифига компилятор ваш этого не просечет и вывалит ошибку времени исполнения, хотя формально по типам все верно) и таких мест хренова куча.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 15-Сен-12 04:23 
Это суровая системщина какая-то у вас, если приводить типы постоянно надо. Впрочем в JS массивы (а особенно объекты) действительно часто применяются там, где нужна была бы структура ( в сиысле сишного struct, возможно - расширенного необязательными полями, как в protobufs) - что очень даже способствует багам.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 15-Сен-12 11:20 
Конечно системщина, единственная нормальная ниша для сей. Да, у JS полно своих косяков, просто не надо заявлять что при жестком типизировании компилятор все проверит и укажет на ошибки, точно так же многое не проверит. Реально, на практике, работаю как с сями так и с JS кодом, и косяков при поддержке одинаково, потому что подавляющая их масса связана не с типизированием.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 15-Сен-12 13:35 
1) си строгостью типизации ну никк не отличаются

2) кроме системщины есть куча областей, где строгая типизация даёт выигрыш по надежности софта, и воевать с ней не нужно - это, в общем-то, любая более-менее крупная приклажная софтина. А уж если разрабатывается парой десятков человек - тем более.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 15-Сен-12 14:36 
Да не воюю я с типизацией) вещь хорошая, просто когда некоторые совершенно не знающие js начинают пороть чушь то их надо ставить на место, в том числе и когда они начинают абсолютизировать типизацию вроде "можно быть уверенным в том, что левый тип передан не будет".

Конечно типизация это благо, но не всегда, и не всегда необходимое, если ктото не видит этих мест и не способен на этом выиграть, не теряя в остальном, то это его проблемы.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 15-Сен-12 15:56 
Ну здесь да, спорить не о чем.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 14-Сен-12 00:23 
> Из-за интерпретации формальный синтаксис у JS проверяется только там, где происходит выполнение.

FYI: даже самая первая версия Брэндана использовала компиляцию в байт-код. откуда у JS растут некоторые забавные фичи: например, непривычное действие var.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 13-Сен-12 05:56 
Именно. Вообще за большие программы в браузере надо отгрызать голову, но раз уж оно приползло - неплохо бы хоть поддержку приличную...

Впрочем, документация, которую дают типы, набольших проектах ещё важнее, как по мне.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено XoRe , 12-Сен-12 23:18 
> Интересно, а есть ли смысл мутить какой-нить режим, который нужно будет самому
> руками активировать и в котором нужно будет самому руками всё типизировать?

Dart, Python, как замена js


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 13-Сен-12 05:57 
Питон в браузере? Это где ж такое? А Dart - ну да, ждём, если выстрелит

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 23:26 
> Интересно, а есть ли смысл мутить какой-нить режим, который нужно будет самому
> руками активировать и в котором нужно будет самому руками всё типизировать?

Зачем? Давным давно (с 78-го года) есть метод выведения типов в выражении. То есть, в строго-типизированном языке с выводом типов вы указываете тип только в одном месте, а всё остальное выводится компилятором. Вот, например, код на OCaml:

let sqr x = x *. x;;

Printf.printf "%f\n" (sqr 2.0);;

Компилятор уже в функции sqr понимает, что x - вещественное число, т.к. используется вещественный оператор. То есть, если за определением написать

let z = sqr "Привет";;

то на стадии компиляции произойдёт ошибка. При этом, заметьте, нигде названия типа float не упомянуто. Достаточно уже того, что *. умножает float'ы и 2.0 - это float.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 13-Сен-12 06:00 
Угу. Только явное

float x;

куда яснее выражает намерения разработчика. Даже если компилятору всё равно - человеку, читающему код, много понятнее. Особенно если там не float а какой-то свой сложный тип - можно сразу ткнуться в его документацию, например.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 13-Сен-12 10:19 
> Угу. Только явное
> float x;
> куда яснее выражает намерения разработчика. Даже если компилятору всё равно - человеку,
> читающему код, много понятнее.

Если этих флоатов много, они уменьшают читаемость.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 16-Сен-12 09:52 
> Интересно, а есть ли смысл мутить какой-нить режим, который нужно будет самому
> руками активировать и в котором нужно будет самому руками всё типизировать?

Типизированные массивы сделали, например, на радость игроделам и подобным. Лиса и хром вроде как умеют, остальные - без понятия.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 22:17 
> Давно уже динамически компилируется, а теперь ещё и динамически типизируется. Хром, кстати, типизацию уже давно умеет.

Речь идёт не о динамической компиляции, а о статической. То есть, обычной. При статической компиляции происходит проверка синтаксиса, небольшая проверка логики.

Собственно, я бы ничего не имел против встраивания в браузер LLVM машины и передачи скриптов страницы, если они такие тяжёлые, в виде LLVM кода. Если лёгкие, то и JS движок можно не оптимизировать столь тщательно.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 17:29 
> HTML предназначен для вёрстки текста...

Вылезайте из 90х, и у HTML уже давно другая роль, и JS типизируют и компилят.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 17:34 
> Вылезайте из 90х, и у HTML уже давно другая роль, и JS
> типизируют и компилят.

Ну как-раз HTML своей роли не менял. Разве что помимо картинок теперь можно к тексту приложить звук и видео. Но он как был языком разметки текста, так и остался.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 17:43 
> как был языком разметки текста, так и остался.

Не вебдев вы, сразу видно, иначе объясните зачем из по вашему мнению "языка разметки текста" убрали управление шрифтами? или например почему все нововведения текста никак не касаются?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноным , 12-Сен-12 17:46 
Потому что для этого CSS есть, который как раз именно для управления шрифтами подходит в 100500 раз лучше?

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 17:53 
Потому что разметка текста в HTML уже давно не основное.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 17:56 
> Потому что разметка текста в HTML уже давно не основное.

А какое? Что теперь стало основным?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 18:01 
разметка вообще, а не текста, и выполнение роли контейнера, т.е. объединение сопутствующих технологий в единое целое

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 18:03 
> разметка вообще, а не текста,

Тогда выучи наконец значение буквы H в HTML: http://en.wikipedia.org/wiki/Hypertext
Он никогда и не был языком разметки только текста. Иначе он бы назывался TML.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 18:49 
Ну и о чем тогда спорим? Я отвечал челу который по сути выразился вроде "html это всего лишь язык разметки текста а на нем пытаются создавать тяжелые интерфейсы" см. выше. И про изменение роли я отвечал ему же, тому кто считает что разметка текста это до сих пор, как на заре, основная функция, а не тем людям которые понимают что кроме разметки текста у современного html куда бОльшая куча др. функций)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 12-Сен-12 17:50 
Я и не веб-дев, но чья бы корова мычала. Какое отношение управление шрифтами имеет к разметке гипертекста на логические блоки?
И какие такие «все нововведения»? Звук и видео? А возможность вставлять картинки в нём тебя всё это время не смущала? Что это меняет, помимо того, что теперь рядом с блоком текста можно поместить блок с видео, а не только с картинкой?

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 19:22 
> Я и не веб-дев, но чья бы корова мычала. Какое отношение управление
> шрифтами имеет к разметке гипертекста на логические блоки?
> И какие такие «все нововведения»? Звук и видео? А возможность вставлять картинки
> в нём тебя всё это время не смущала? Что это меняет,
> помимо того, что теперь рядом с блоком текста можно поместить блок
> с видео, а не только с картинкой?
> он как был языком разметки текста, так и остался

Очевидно что начавший ветку говорил об основной функции языка, в начале по факту она такой и была, ибо странички были в основном текстовые, и даже шрифтами рулили из html, однако в настоящее время бОльшая часть html кода страницы к тексту отношения не имеет, это логические блоки, картинки, и куча др. контейнеров, понятно что html никогда не был исключительно разметкой текста, но в начале по факту это было основным, теперь же это и по факту не так, поэтому с точки зрения человека считающего что основная функция html это разметка текста, можно говорить о изменении роли.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 22:46 
> Очевидно что начавший ветку говорил об основной функции языка, в начале по
> факту она такой и была, ибо странички были в основном текстовые,
> и даже шрифтами рулили из html, однако в настоящее время бОльшая
> часть html кода страницы к тексту отношения не имеет, это логические
> блоки, картинки, и куча др. контейнеров, понятно что html никогда не
> был исключительно разметкой текста, но в начале по факту это было
> основным, теперь же это и по факту не так, поэтому с
> точки зрения человека считающего что основная функция html это разметка текста,
> можно говорить о изменении роли.

Да, именно так.И я, в основном, о том, что это изменение роли произошло эволюционным путём. Со всеми присущими эволюционному подходу недостатками: необходимостью держать совместимость + костыли.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 22:57 
Ну, в сях/плюсах например костылей на порядок больше, впрочем они конечно и старше, куда ж мы все вообще без костылей то?)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 23:20 
> Ну, в сях/плюсах например костылей на порядок больше, впрочем они конечно и
> старше, куда ж мы все вообще без костылей то?)

Вообще-то, сейчас С++, к счастью, уже уходит. Вот и HTML+JS туда же пора.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено анонимус , 13-Сен-12 07:43 
>> Ну, в сях/плюсах например костылей на порядок больше, впрочем они конечно и
>> старше, куда ж мы все вообще без костылей то?)
> Вообще-то, сейчас С++, к счастью, уже уходит. Вот и HTML+JS туда же
> пора.

С++ еще и нас переживет


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 16-Сен-12 09:55 
> Вообще-то, сейчас С++, к счастью, уже уходит. Вот и HTML+JS туда же пора.

Куда? :) Все серьезные игроделы на нем пишут. Просто потому что альтернатив нет. А си вон вообще опять на 1-е место вырвался по популярности, обув жабу. Что и не удивительно. Вон например толпа ардуинщиков повылезла -  си и си++. Опять.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 16-Сен-12 13:28 
> Просто потому что альтернатив нет.

это заблуждение.

нет, мне лень аргументы писать, у меня ваще голова болит.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 13-Сен-12 05:57 
> с точки зрения человека считающего что основная функция html это разметка текста, можно говорить о изменении роли.

С точки зрения фаллообразного пришельца с юпитера у человека самый мудрый орган находится промеж ног и у половину человечества разум вообще отсутствует. И он даже будет не очень далёк от истины, как ни странно.

А неправы будут оба.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 22:14 
> Вылезайте из 90х, и у HTML уже давно другая роль,

Вот именно об этом и речь. Изначально HTML предназначался для вёрстки, его определённым кол-вом подпорок превратили в язык создания интерфейсов.

> и JS типизируют и компилят.

Его компилируют перед тем, как выкладывать на сервер?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 22:53 
Не, html это не язык создания интерфейсов, так что концептуальных потпорок нет, это язык верстки, объединения, компоновки элементов, его не во что не превращали, основная идея осталась прежней, его просто модифицировали, чтото выкинули, типа управления шрифтами, чтото добавили, типа разных блоков, чтото вынесли в др. языки типа CSS, т.е. в конечном счете как это не удивительно обобщили и сконцентрировали на верстке вообще, в т.ч. верстке программного кода, хотя конечно многое пока еще оставляет желать лучшего, ну так и процесс не окончен)

Ктото наверное JS и предварительно компилит, перед выкладыванием на сервер, но в мэйнстриме (V8 и т.п.) он компилится движком перед выполнением а затем частично кешируется. Да, у статической компиляции есть свои плюсы, а у динамической свои) В идеале динамическая компиляция более эффективна статической с точки зрения производительности, что на некоторых примерах подтверждается уже сейчас, но в общем на текущий момент JS пока еще проигрывает плюсам порядка 30%. Типизация в JS постепенно внедряется, а значит плюсы статики рано или поздно будут сведены на нет, а вот плюсы динамики никуда не денутся, вот и думайте)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 23:15 
HTML 5, извините, потерял совместимость с HTML 1?

> Да, у статической компиляции есть свои плюсы, а у
> динамической свои)

На больших проектах статическая компиляция предпочтительнее тем, что она проверяет все ветви исполнения программы. То есть, если вы написали код

if( rand() == 1)
{
белиберда
} else
{
  return 0;
}

то несмотря на то, что шанс попадения в первую ветку очень мал, статический компилятор gcc обнаружит синтаксическую ошибку. И вы её исправите. А в динамическом языке эта конструкция будет чаще всего работать и изредка вылетать. :-) Причём вылетать так редко, что на тестировании вы это пропустите.

Скорость компиляции, если это не переусложнённый язык типа C++, весьма мала. Те же самые скрипты на OCaml можно компилировать каждый раз непосредственно перед выполнением.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 23:36 
Конечно потерял, я вам про <font> же говорил уже, и далеко не он один.

Бросьте, в статике тоже может быть белиберда и компилятор ее не проверит, точно также выкинет ошибку времени исполнения, иначе акцесвиалейшены и "программа выполнила недопустимую операцию" в статике откуда? Может быть не синтаксическая а логическая ошибка, может быть неправильная постановка задачи, и т.п. По факту, из практики, не вижу разницы в сопровождении что статики что динамики, гораздо большее зависит от уровня программиста.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 23:40 
> Бросьте, в статике тоже может быть белиберда и компилятор ее не проверит,
> точно также выкинет ошибку времени исполнения, иначе акцесвиалейшены и "программа выполнила
> недопустимую операцию" в статике откуда?

Может быть. Но дополнительная проверка сделает её менее вероятной.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 00:04 
Согласен, но отсутствие необходимости явной компиляции и приведения типов экономит время, т.е. как бы не то на то, также динамическая оптимизация дает плюсы в производительности, ну и в конце концов, никто не запрещает и в динамике использовать типизацию и соответствующий анализ, сейчас это пока еще очень слабо но дело к тому идет. Короче, предлагаю не скатываться в частности, и не спорить в ключе что статика всегда лучше а динамика это оно)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 00:27 
И вообще, почему мы статику противопоставляем динамике? она прекрасно включает в себя статику, некоторые элементы есть уже сейчас, процесс идет, JS типизируется, думаю вполне можно ожидать следующим шагом за JIT появление в мейнстриме статических анализаторов) ну впрочем коечто уже есть) Не плохой бы язык по моему был, если к JS добавить модули и типизацию по выбору разраба, да динамическую оптимизацию развить, тогда бы и по производительности всех сделали, и при необходимости по строгости, и по удобству)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 00:30 
Тогда си можно будет хоронить, а движок JS встраивать в процессор вместо текущего интерпретатора "нативного" кода :)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 13-Сен-12 01:51 
> И вообще, почему мы статику противопоставляем динамике? она прекрасно включает в себя
> статику

Потому, что решения задач построения десктопных приложений давным давно отработаны. Практика показала, что большие десктопные приложения удобно делать с компилируемыми статически типизированными языками.

А ведь именно в сторону больших десктопных программ и пришла связка HTML+JS. Посмотрите, сколько JS кода качает браузер, когда первый раз заходим на GMail или другой AJAX сайт.

> , некоторые элементы есть уже сейчас, процесс идет, JS типизируется, думаю
> вполне можно ожидать следующим шагом за JIT появление в мейнстриме статических
> анализаторов) ну впрочем коечто уже есть) Не плохой бы язык по
> моему был, если к JS добавить модули и типизацию по выбору
> разраба, да динамическую оптимизацию развить, тогда бы и по производительности всех
> сделали, и при необходимости по строгости, и по удобству)

Ну это вы из JS хотите сделать очередной С++. Такая штука взлетает, но летит крайне хреново.

Ещё что плохо в HTML+JS по сравнению с компиляцией в промежуточное представление, которое бы выполнялось в браузере на llvm - это то, что разработчик ограничен именно этими 2-мя языками. Разработчик не может взять, скажем, F# или D или Ruby. Он должен ваять на JS.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 02:47 
Практика показала что на JS еще удобнее)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 13-Сен-12 06:03 
Нет. Он выиграл за счёт дешевизны деплоя и доставки приложений и контроля над ними вендора (что нам с вами ещё аукнется). Сама платформа неудобна до ужаса, просто деваться некуда.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 13-Сен-12 01:45 
> Согласен, но отсутствие необходимости явной компиляции и приведения типов экономит время,

На современном лёгком языке компиляция мгновенна. Посмотрите на OCaml, к примеру. В современных языках со статической типизацией совершенно необязательно везде указывать тип переменных, как в С. Компилятор их выводит сам.

В общем, я про то, что задачи, которые возлагаются на JS уже переросли его. Эти задачи уже много лет прекрасно решают компилируемые языки (не важно, в промежуточное представление или прямо в маш. код).

Из-за этого несоответствия JS и возлагаемых на него задач мы и наблюдаем все эти мегаоптимизации, вкладывание диких средств в производительность JS движков. Тогда как обычные компиляторы обычных языков достигают такой же производительности без вложений таких диких средств.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 03:00 
Кроме производительности обычных компиляторов обычных языков есть еще их распространенность, удобство, сопутствующая инфраструктура, кадры и т.п, на дотяжку которых, потребуются все те же дикие средства, ну или расскажите это гуглу, они наверное глупенькие не знают.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 13-Сен-12 06:05 
ну да, цена эволюционного развития и несогласованности вендоров. Вот как вы себе предсавляете договор гугла, эппла и майкрософта о введении нового языка вместо JS? Хотя байткод прямо напрашивается...

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 13-Сен-12 13:04 
> Хотя байткод прямо напрашивается...

Я думаю, что если тот же Google возьмёт ?независимую? llvm и встроит в Chrome, дав возможность тому резко поднять производительность и удобство разработки, то остальным делать будет нечего.

Это, всё-таки, не жалкие 2 раза будут. А уж тем более, не 20%.

Во-первых, много разных языков => колоссально вырастет производительность программистов. Во-вторых, значительно выше скорость выполнения, значительно ниже требования мощности машины, в том числе, и памяти.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 14:10 
Говорю тебе бобер, выдыхай) то у тебя js не компилируется, то синтаксические ошибки не ловит, теперь вот еще одну басню про производительность завел. Не пишешь на современном JS, не сравниваешь, так помолчал бы.

Откуда там резкий подъем производительности если v8 js вплотную стоит к C++, отставание в среднем 30%, и по памяти - используй типизированные массивы будет один в один столько же, что же касается десяти метров на движок то в тех областях где js применяется это просто ничто.

И от много разных языков производительность программистов не вырастет, доказано практикой, а вот геморой вырастет легко.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 15-Сен-12 05:07 
Производительность-то программистов как раз вырастет - в разных областях применения разные языки удобны. Где-то вообще функциональщина подойдёт больше, где-то контракты будут на пользу... Да много чего придумано.

Но вот "байткод от гугла" уже есть - NaCl - но не взлетел особо.

Да, кстати - это, что ли, 30%? http://shootout.alioth.debian.org/u64/benchmark.php?test=all...


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 15-Сен-12 11:53 
Это оно в теории вырастет, а на практике код чаще поддерживается чем пишется, и поддерживается зачастую совсем другими людьми, один выиграл при написании а потом трое трахаются с незнакомым языком, плавали, знаем, и спецов под конкретный язык при их зоопарке искать гораздо сложнее. Вообще языков конечно должно быть много, но не в мэйнстриме.

Ну уж не досуг анализировать как они там ухитрились получить слив от js в сотни раз, даже старые дремучие perl/php так не сливают, я же проверяю на элементарных сравнимых операциях:

node 0.8.8 x64, MS VS 2012, Q9400 1 core
--------------------------------------------------
int64_t i, j;
j = 0;
for (i = 0; i < 10000000000; i++) {
  j++;
}
printf("%I64d", j);

= 13 сек
--------------------------------------------------
var j = 0;
for (var i = 0; i < 10000000000; i++) {
  j++;
}
console.log(j);

= 18 сек
--------------------------------------------------
int64_t i, j;
j = 0;
for (i = 0; i < 2000000000; i++) {
  if (i > 600000000) j++;
  if (i < 1000000000 && j > 200000000) j++;
  if (i > 1400000000 || j > 600000000) j--;
}
printf("%I64d", j);

= 14 сек
--------------------------------------------------
var j = 0;
for (var i = 0; i < 2000000000; i++) {
  if (i > 600000000) j++;
  if (i < 1000000000 && j > 200000000) j++;
  if (i > 1400000000 || j > 600000000) j--;
}
console.log(j);

= 11 сек

и т.п. В среднем нода уступает 30%.
На таких же элементарных примерах сравнивал расход памяти, если юзать нетипизированные массивы то раза в 3 больше, если типизированные то совершенно одинаково.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 15-Сен-12 13:21 
а никто не говорит, что в одном проекте обязатлеьно должна быть пачка языков (хотя два-три - часто выгодны).

А в тестах - разница в том, что у вас чистейшая синтетика, которая идеально преобразуется JIT'ом. Джависты примерно на таких же примерах то же самое показать пытались - а на практике тормоза джава-софта невооруженным глазом заметны, и чем больше приложение - тем более заметны (особенно когда GC всё же вступает в дело).

Хотя если есть желение - возьмите исходники с шутаута, чем черт не шутит - может правда в условиях начудили.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 15-Сен-12 13:59 
Ну вот по моему языки только на простейшей синтетике и можно сравнивать, а как только реал начинается так тут уже не столько от языка начинает зависеть сколько от соответствия задачи и программиста)

Таже жаба например, есть такое подозрение что большая часть ее тормозов связанна не столько с тормозами машины сколько с тараканами в головах разрабов, их идеалогией, ну и честно надо сказать с требованиями ынтерпрайза тоже) Вся эта их мегаобъектность, меташаблонность, ормы и т.п, вся эта куча прослоек, защит и расширений икается.

Ну или иначе не знаю, какие еще могут быть причины? Если исходные кирпичи/раствор одинаковые (а те тесты что я привел это какраз и есть исходные кирпичи) то почему у одних из них получается нормальный дом а у других сыпется?

Хз, может быть еще из-за того что теже сишники например вынуждены постоянно следить за тем что делают, ибо прощелк на любом уровне тут же все завалит, а у др. есть возможность расслабится)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 15-Сен-12 16:05 
Насчет жабы и сишников согласен, но вот насчет простейшей синтетики и кирпичей/раствора - не особо. Потому что
1) в ваших тестах одна математика - а в нынешнем софте она отнюдь не доминирует. А что-нибудь вроде стоимости вызова функций, создания объектов и т.д. вы не меряли.
2) разные языки провоцируют разный стиль. То чо в плюсах решится объектом в джаваскрипте окажется замыканием, где-то будет лок, а где-то - коллбек и т.п. В этом смысле шутаут как рза очень показателен - берем пачку релаьных задач и стараемся на каждом языке какждую задачу решить побыстрее - любой ценой. Учитывая, что варианты решения принимаются извне и лучщее решение заменяет худшее - на криворукость авторов результат не спишешь, остаётся винить конкретный язык или его реализацию. Ну ещё опции запуска иногда - но здесь хозяин идёт на встречу охотно, насколько я помню.

3) то что оптимизатор справился с очень предсказуемым кодом, повторяющимся миллионраз - не показатель, что он справится с несинтетическим случаем, когда логика чуть сложнее, или что-то вклинивается в цикл, и т.п.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 15-Сен-12 18:51 
Хорошо, мне тоже интересно, возможно ошибаюсь, вечером потестирую еще, выложу, но по шутауту не согласен, 10 сишников это 10 голов, каждая со своим опытом и оптимизацией, а 1 jsник это один jsник, ну вы поняли.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 15-Сен-12 18:55 
чем меньше, блин, сишный код «оптимизируют», тем лучше (понятно, это не касается вещей типа замены сортировкой «пузырьком» на нечто более вменяемое).

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 15-Сен-12 19:06 
не надо слов, покажи класс брат

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 15-Сен-12 19:09 
> не надо слов, покажи класс брат

какой? ты считаешь, что сумеешь микрооптимизациями обскакать хороший компилятор? ну, вперде. желаю потом весёлого квеста в поддержке такого кода.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено Аноним , 15-Сен-12 19:12 
а я тебе просто желаю счастья и не лезть не в свое)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 15-Сен-12 19:19 
> и не лезть не в свое)

я и не лезу. а вот «мегопрограммисты» лезут почему-то постоянно. и очень удивляются, когда им говоришь, что их код — неподдерживаемое гуано, и работать они конечно будут, но точно не у нас.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 16-Сен-12 08:10 
int64_t t(int64_t a) {
  return a + 2;
}

int64_t i, j;
for (i = 0; i < 3000000000; i++) {
  j = t(i);
}
printf("%I64d", j);

= 6 сек
--------------------------------------------------
function t(a) {
  return a + 2;
}

for (var i = 0; i < 3000000000; i++) {
  var j = t(i);
}
console.log(j);

= 9 сек

тут есть момент, до 3G итераций нода выигрывает в 1.5 раза, после - резко ступенькой начинает проигрывать в 2, далее с увеличением кол-ва итераций разрыв не растет.

Сравнимого примера работы с объектами родить не смог, статические объекты сей рвут js'ную динамику как тузик грелку! десятки раз, теоретически тут надо сравнивать с <map>, но практически это наверное в пользу бедных, объекты используются часто, и если их много то общий слив может быть весьма приличным.

Далее тест на GC и память:

int64_t i, j;
vector<int> *p[100000];

for (i = 0; i < 100000; i++) {
  p[i] = new vector<int>;

  for (j = 0; j < 50000; j++) {
    p[i]->push_back(j);
  }

  if (i > 2000) { delete p[i - 2000]; }
}

30 сек 480Мб
--------------------------------------------------
var s = [];

for (var i = 0; i < 100000; i++) {
  s[i] = new Int32Array(50000);

  for (var j = 0; j < 50000; j++) {
    s[i][j] = j;
  }

  if (i > 2000) { s[i - 2000] = null; }
}

22 сек 530Мб

в диспетчере по динамике памяти видно что GC работает, объем памяти достаточно быстро стабилизируется, правда у ноды его колбасит на протяжении всего процесса +/- 100Мб, что в общем то понятно, кроме того есть милая фишка - если у ноды закомментить последнюю строчку с очисткой то она насмерть вешает винду, в дрова, только аппаратный сброс)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 16-Сен-12 17:14 
Поторопился, разобрался, с объектами таки не все так плохо:

class c {
public:
  int64_t x;
  c(int64_t v);
};

c::c(int64_t v) {
  x = v;
}

c *p[10000001];
int64_t i, j;
j = 0;
for (i = 0; i < 100000000; i++) {
  p[j] = new c(j);
  p[j]->x++;

  j++;
  if (j > 10000000) j = 0;

  if (i > 10000000) delete p[j];
}

11 сек 200Мб
--------------------------------------------------
o = [];
var j = 0;
for (var i = 0; i < 100000000; i++) {
  o[j] = {
    x: j
  }  
  o[j].x++;
  
  j++;
  if (j > 10000000) j = 0;

  if (i > 10000000) o[j] = null;
}

19 сек 700Мб (в процессе периодически колбасится от 400 до 900, - работает GC)

Данный вариант (без методов) наиболее употребим в JS т.к. в нем нет структур и они реализуются объектами, но без ложки дегтя всетаки не обошлось, если к JS объектам добавлять методы (функции) то они начинают существенно проигрывать, причем тем больше чем больше функций, при добавлении 1 - в 4 раза, 3 - в 7 раз и т.д. Это конечно печально, но и сравнивать тут в прямую нельзя, в плюсах методы статические, в JS же - динамические, их код может формироваться в ходе исполнения, как говорится 2 большие разницы.

Так что остаюсь при своем мнении что в общем JS проигрывает совсем не много (при соответствующем применении) но засады есть, где ж их нет, их надо знать, также надо не забывать что типизация в JS находится в зачаточном состоянии - может вылезти некоторый перерасход памяти. Производительность в большинстве тестов +/-1.5 раза, расход памяти от аналогичного до 3-5 раз больше, по моему все это весьма не плохо, тем более для динамического языка)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 16-Сен-12 09:57 
> Согласен, но отсутствие необходимости явной компиляции и приведения типов экономит время,

...кроме случая когда программер зеленеет пытаясь поймать редкий баг, а на JS такое сплошь и рядом попадается. Так по опыту :)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 16-Сен-12 13:29 
> …кроме случая когда программер зеленеет пытаясь поймать редкий баг, а на JS
> такое сплошь и рядом попадается. Так по опыту :)

волшебное слово: «тесты». не, не слышал?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Lain_13 , 13-Сен-12 06:05 
> Конечно потерял, я вам про <font> же говорил уже, и далеко не
> он один.

Вот только это ни на что не влияет. Влепи правильный доктайп и верстай соблюдая его стандартны. С выходом HTML5 все его предыдущие версии ни кто не отменял и поддержку из браузеров не удалял. Главное скажи браузеру какой версии HTML ты используешь.
А язык разметки от этого изменения только избавился от лишнего мусора, которому в разметке вообще не место.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 21:57 
> У Хрома тоже шустрый JS движок. Даже шустрее фокса. Хром тоже тормозной
> по-дизайну, раз ему такой движок сделали?

А у хрома тормозят другие вещи. Например, загрузка страниц. Хрен знает почему, но у лисы пайплайнинг намного лучше отрабатывает.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 17:19 
> На какие только извращения не пойдёшь, чтобы ускорить нечто тормозное by design

В общем, да. HTML+JavaScript не особо предназначены для создания десктопных программ. А ведь это сейчас народ и пытается на них делать.

---------------------------------------------------------------------------------
Мне, кстати, непонятно такое: разница между движками 20%. Это совершеннейшие копеечки. Практически ошибка эксперимента. И был ли смысл огород городить?

Ещё два раза куда бы то ни шло. Хотя тоже не сильное обоснование менять движок.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 22:18 
> HTML+JavaScript не особо предназначены для создания десктопных программ

А QML+JS?) Смотря что вы подразумеваете под десктопом. Для интерфейсов и клиентов в общем, HTML/QML/JS+обвеска типа дома/ноды по моему самое то, кросплатформенно, без лишних заморочек, и весьма немалую обработку тут же прикрутить можно, в т.ч. и серверную если на ноду посмотреть. А вот чтото чисто системное или совершенно жестко цифродробильное, типа скажем драйверов, или там СУБД, конечно не их, ну так ниша и без этого есть, на той же делфе с 98г пишу по сей день, казалось бы куда более удобно для таких целей, ан нет, на HTML+JS всеже приятнее получается, а в последние 3 года так и вообще не хуже.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 22:41 
> А QML+JS?)

JS, как динамически типизируемый язык плохо предназначен для создания больших программ. Он хорош там, где нужны маленькие скрипты.

Впрочем, сейчас, в связи с распространением языков с автоматическим выводом типов, и в скриптах вполне можно использовать языки со строгой типизацией. Например, слегка подпилив OCaml (в сторону упрощения) можно сделать отличный скриптовый язык для замены sh.

Кроме того, вы разве компилируете программы на JS? Вы проводите его статический анализ? А ведь этот анализ значительно упрощается и легче ловит ошибки, если язык типизированный.

В общем, вы забыли упомянуть, что за связкой QML+JS стоит старый, древний, костыльный, но всё-таки приспособленный для создания больших программ, С++.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 23:06 
Проблема больших программ это проблема древних как оно мамонта сей, когда нет модульности и указатели по всему адресному пространству процесса, а когда у вас модульность и нет средств залезть в другой модуль кроме как через официальный интерфейс, то этой проблемы нет, я не хочу сказать что в JS с этим нет проблем, тоже есть свои грабли, но вообще это проблема другого уровня.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 12-Сен-12 23:18 
> Проблема больших программ это проблема древних как оно мамонта сей, когда нет
> модульности и указатели по всему адресному пространству процесса, а когда у
> вас модульность и нет средств залезть в другой модуль кроме как
> через официальный интерфейс, то этой проблемы нет

Это как это нет? Ну разделили вы на модули и что? Библиотека хочет целое число, а вы случайно туда передаёте строку. Если этот код очень редко выполняется, на стадии тестирования у вас есть большие шансы пропустить ошибку. В то же время любой статически типизируемый язык ловит такое на стадии компиляции.

Ну и не надо думать, что все языки на С++ и закончились. JS должен не с ними конкурировать, а со всякими F# и т.д.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 23:52 
Ну вот нет, по определению, потому что модуль обязан проверять входящие данные в динамике, а не уповать на состояние во время компиляции а потом вдруг падать наглухо если левое подсунут, он должен писать ошибку в лог и продолжать, впрочем практические плюсы у статики конечно есть, я же говорил, не отрицаю, но у динамики есть свои)

А с тем что JS не должен конкурировать с сями я полностью согласен, вот с плюсами уже спорно, ибо у них понтов слишком дофига)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 13-Сен-12 01:58 
> Ну вот нет, по определению, потому что модуль обязан проверять входящие данные
> в динамике

Ну проверит, поймёт, что ему 4999 раз выдавали целое, как надо, на 5000-й раз передали строку. И что дальше он будет делать с этой строкой - неправильным типом? Программа-то тогось. Самое разумное, что можно сделать - это вывалиться с ошибкой.

А со статической компиляцией вы бы такой ляп исправили бы ещё до тестирования. Компилятор вывел и проверил типы. И всё.

Ещё раз, статическая типизация совершенно не означает, что вы везде должны указывать тип. В подавляющем большинстве мест в современном языке тип выражения компилятор определит сам.

И, фактически, для вас динамическое типизирование от статического с системой вывода типов отличается только тем, что в паре мест типы нужно привести явно, да компилятор в статике проверит корректность вывода типов. Всё остальное - такое же.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 03:32 
Это при жесткой статике когда нет рантаймовых проверок она тогось, с переполнениями, затираниями, нарушениями доступа и пр. прелестями, а при нормальных раскладах проверила, обматюкалась куда положено, и поехала дальше.

И хрен компилятор проверит типы, т.к. входные данные это динамика из вне, проверки по любому нужны. Внутри же модуля, когда вы работаете с уже проверенными данными, статические проверки - не пришей кобыле хвост, ибо нормальный небольшой модуль решает строгую простую задачу и косяконуть с типами сложно, в крайнем случае это выявится при первом же прогоне.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 13-Сен-12 06:13 
Запросто накосячить- софт же развивается и требования к параметрам меняются. А если нет типов - проследить, что из одного модуля в другой транзитом именно нужный объект пришел сложновато. А если промежуточных штук шесть, да еще разными могут быть - легче просто помолиться. Особвнно учитывая идиотские джаваскриптовые преобразования типов.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 10:29 
Да накосячить можно где угодно, при жесткой типизации также, изменили вы например размер поля, в некой структуре памяти, в середине цепочки, и писец, все обвалится, и проследить потом так же, легче помолиться, ибо придется пошагово раскручивать с самого начала.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 15-Сен-12 13:40 
Напишете то же самое на каноничном D (да, на нём системщину можно писать) - он ругнётся. Это вам как раз хреновая типизация сей в ногу стреляет. Наверняка и ещё пара языков кроме D найдётся, которые нужные типы описать дадут.


P.S. Собственно, даже в сях битовые поля никуда не девались, и так просто начудить вроде и не выйдет, разве что извне откуда-то структуру принимаете в виде массива или void*.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 15-Сен-12 14:53 
О том и говорил, см. выше, входные данные это динамика из вне

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Vkni , 13-Сен-12 10:15 
> И хрен компилятор проверит типы, т.к. входные данные это динамика из вне,
> проверки по любому нужны.

Нужны. Но статический анализ идёт в дополнение к этому. Понимаете - в обычном компилируемом языке - как бесплатное дополнение.


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 13-Сен-12 06:11 
Есть ещё лучше ситуации. Вы приняли какую-то пачку параметров (как водится в JS - объектом) и отдаёте её ещё одному модулю (возможно после некоторых преобразований). А потом у него изменяются требования и эта пачка параметров должна быть несколько другой - например обязательный параметр добавился. Согласовать эти три модуля, чтобы всё корректно во всех случаях отдавали в большом проекте - врагу не пожелаешь. Никакое тестирование не помогает при вложенности коллбеков эдак в десятку - тупо не сделаешь все mockup'ы.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 17:23 
Ровно на такие же как сделать нечто тупое by design более человечным)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено EuPhobos , 12-Сен-12 17:25 
Интересно прирост скорости на WebGL тоже отразиться..

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 16-Сен-12 10:00 
> Интересно прирост скорости на WebGL тоже отразиться..

Сильно зависит от того во что сцена упиралась. Если в JS то отразится. Правда, может быть, тогда это сигнал к тому что надо выпустить нормальную версию на си++? Оно там нахаляву раз так в эн подтянется хотя-бы просто за счет статической типизации и прочая :)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового..."
Отправлено arisu , 16-Сен-12 13:33 
> эн подтянется хотя-бы просто за счет статической типизации и прочая :)

вот привязался же к «статической типизации», а… да не даёт она мегавыигрыша в долгосрочке, не даёт. все нормальные JIT'ы сейчас способны собрать статистику и сгенерировать один/несколько вариантов кода функции для разных типов. а в простейших случаях и так выводят.

алсо: удачи тебе — с твоей типизацией — в универсальной реализации базовых алгоритмов. ну, например, qsort: правда ведь, няшный костыль получился?

впрочем, я понимаю: алгоритмы переписывать под новые типы нескучно. и разбираться в выхлопе шаблонизатора (который ещё и компилируется в час по чайной ложке) тоже: ведь не зря шаблоны — тюринг-полный функциональный язык, правда?


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 18:36 
Интересно узнать: представленные результаты тестов нового движка лучше конкурентов? Я имею в виду Opera и Chrome.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 18:59 
21 хром обгоняет 14 фокса по моим прикидочным тестам приблизительно раза в 2, ну и многие также около того отзываются, таким образом рост производительности на 20-25% кардинально не решает, но всеже приятно)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено kombat , 12-Сен-12 18:40 
Жалко. Интересно было бы узнать мнение людей. Огнелис, и громоптица, мореобезьяна.. (Кто там говорил про зоопарк?)неплохо звучат. Но Серьезному браузеру - достойное имя!

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноным , 12-Сен-12 18:55 
Internet Explorer. Серьёзней некуда.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 21:58 
> Internet Explorer. Серьёзней некуда.

Разведчик интернета. Почему разведчик? Потому что влобовую биться очкует - слишком очевидно неравенство сил :)


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 12-Сен-12 19:48 
Пока весь фокс - всего лишь один процесс, тормоза обеспечены, ускоряй жабаскрипт, не ускоряй...

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноным , 12-Сен-12 19:54 
Вот тогда он точно от гига жрать будет)

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено aleos , 12-Сен-12 21:56 
Землю-крестьянам! Заводы-рабочим! Ребенку-многопроцессорность!
И как мы раньше жили без этого? А тут прям все. Тупик. И жизни дальше нет.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 01:42 
Гражданин, залезьте обратно в свой ДОС.

"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Crazy Alex , 13-Сен-12 06:18 
Если кто не в курсе:

1) в браузере куча интерпретируемого кода, который для операционки виден как данные. Этот код не шарится между инстансами. То есть зазря пропадает память.

2) у потоков общая память, что шутсрее любого IPC (даже быстрее shared memory у профессов, AFAIK - но браузерным процессам shared memory может сделать только полный кретин - замучаешься синхронизировать, да и выгод от изоляции не получить).


"Firefox 18 перейдёт на IonMonkey, JIT-компилятор нового поко..."
Отправлено Аноним , 13-Сен-12 22:01 
> Пока весь фокс - всего лишь один процесс,

Мсье, один процесс может запускать более одного треда, внезапно. Используя более 1 CPU. Кстати веб-воркеры в FF уже умеют использовать все ядра процессора, что прекрасно видно например в бенчмарке Peacekeeper (та часть где параллельный обсчет нескольких картинок с разной яркостью).


"Final версия"
Отправлено Макс , 09-Янв-13 12:37 
Вышла финальная версия Firefox 18 - http://compforgames.ru/download/browser/firefox_18/