Разработчики из компании Google сообщили (http://blog.chromium.org/2014/02/compiling-in-background-for...) о добавлении в JavaScript-движок V8 поддержки фоновой компиляции JavaScript, которая позволит избежать появления задержек в процессе выполнения web-приложений и положительно повлияет на отзывчивость. Представленное улучшение уже доступно для тестирования в бета-сборках (https://www.google.com/intl/en/chrome/browser/beta.html) Chrome и Chrome для Android.В V8 применяется техника адаптивной JIT-компиляции. Так как некоторые виды оптимизации требуют накопления статистики и расходуют значительные процессорные ресурсы, глубокая оптимизация выполняется только для наиболее востребованных и часто выполняемых блоков кода (например, математические операции, цикличная обработка данных, рекурсивные вызовы). Редко используемый код и код, который только начал выполняться, компилируется по упрощённой схеме. До сих пор основной проблемой подобного подхода было то, что стадия оптимизирующей компиляции инициировалось в непредсказуемый для выполняемого web-приложения момент и приводила к возникновению задержек из-за приостановки выполнения кода до завершения компиляции очередного блока. В некоторых ситуациях задержки были вполне ощутимы и достигали 600 мс.
<center><a href="http://4.bp.blogspot.com/-D8tGhazgLAc/Uvz7oNR7oGI/AAAAAAAAAO... src="http://www.opennet.me/opennews/pics_base/0_1392362804.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border=0></a></center>
В новой версии V8 фаза глубокой оптимизирующей компиляции осуществляется в параллельном потоке, без прерывания процесса выполнения JavaScript-кода. Во время компиляции код продолжает выполняться с использованием базовых оптимизаций, а после готовности более эффективного кода, переключается на полностью оптимизированный вариант. Исключение задержек положительно повлияло на производительность сложных ресурсоёмких JavaScript-проектов. Например, показатели прохождения теста Mandreel (https://developers.google.com/octane/benchmark#mandreel), оценивающего скорость выполнения JavaScript-порта движка симуляции физических процессов Bullet, улучшились на 27%.<center><a href="http://2.bp.blogspot.com/-nPVfbtO0vJE/Uvz8PbvH3OI/AAAAAAAAAP... src="http://www.opennet.me/opennews/pics_base/0_1392362917.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border=0></a></center>
URL: http://blog.chromium.org/2014/02/compiling-in-background-for...
Новость: http://www.opennet.me/opennews/art.shtml?num=39084
когда они asm.js добавят?
Оно у них и так работает. asm.js на том же V8 будет выполняться быстрее иного жабаскрипта.
То есть, если ты, к примеру, напишешь распаковщик xz на просто js и оптимизированную версию с использованием asm.js, то asm.js версия будет гораздо быстрее.
А на сколько он при этом близок к бинарнику, собранному из того же кода, из которого генерировали asm.js-код?
По потреблению памяти он всё так же далёк, смею вас уверить.
Может тему менять не будем? Тут говорилось о скорости. На занимаемую память лично мне плевать в данном случае.
>Оно у них и так работает. asm.js на том же V8 будет выполняться быстрее иного жабаскрипта.К сожалению, проблему обычного asm решить так и не удалось. Когда кул-хацкер начинает переписывать что-либо на ассемблере, итог один - больше тормозит и совершенно не переносимо.
а мужики-то и не знали!
они внесли некие оптимизации, и таки да, скорость выполнения увеличилась, но "use asm" не запилили: https://code.google.com/p/v8/issues/detail?id=2599
несёшь фигню. с каких это пор вот это:function sum (a, b) {
a = a | 0; b = | 0;
return a + b;
}стало быстрее вот этого :
/** @type {function (number, number): number} */
function sum (a, b) {
return a + b;
}? Каким образом две смены типа ускоряют код?
да одинаково примерно будет: трассировщик поможет.
почитайте про "|0" и вообще про побитовые операторы в JS, сударь. Вкратце - они супер медленные, из-за смены типа.
а я советую прочитать про то, что такое tracing compilers, и почему здесь почти наверняка на входе будут целые числа.
> когда они asm.js добавят?давно уже!
Единственный движок, без проблем работающий на солярке :-)
>фоновой компиляции JavaScriptСколько возни ради этого JS. Странный это язык -- вроде и язык как язык, но никогда не видел, чтобы JS использовался для чего-то кроме свистелок.
Ну перделки ещё, говорят, пишут на нём.
миллионы мух не могут ошибаться
Всегда было интересно, с какой целью аноны при любом удобном случае употребляют эту фразу.
С точки зрения норм русского языка она является отверждением, а так да — мухи любят фекальные массы и никогда их ни с чем не спутают, но какой подтекст туда влкадываете вы?
>>фоновой компиляции JavaScript
> Сколько возни ради этого JS. Странный это язык -- вроде и язык
> как язык, но никогда не видел, чтобы JS использовался для чего-то
> кроме свистелок.
> Ну перделки ещё, говорят, пишут на нём.Отучаемся говорить за всех. То, чего не знаешь лично ты - не тождественно тому, чего вообще не существует. Компренде?
>Отучаемся говорить за всех.Учимся читать. Где это я говорил "за всех"? :)
Да с ним уже ничего не сделать, кто хотел, тот давно разобрался, много всего написано... Понятно в общем. Так же Гугл пилит Дарт и вообще полно всяких фреймворков, библиотек и препроцессоров.
> никогда не видел, чтобы JS использовался для чего-то кроме свистелокТо есть, например, банальный калькулятор цены для клиента вам на сайтах никогда не доводилось видеть? Или он всегда был на флеше? Или, может, джаве?
Попробуйте хотя бы отключить JS на Опеннете. Вы же не цените свистелки и перделки? Вперед!
Да, это свистелки.
Я где-то сказал, что свистелки это плохо?
(Вы, кстати, не первый, кто в этом треде пытается приписать мне мысли, которые я не озвучивал)
Я сказал, что JS используется, по большей части, для всякого, связанного с пользовательским интерфейсом. Я сказал, что эта часть кода, на мой взгляд, далеко не самая важная. И вообще странно, что язык используется исключительно для подобных вещей. А также странно, что этому уделяют очень много времени и ресурсов.
Я много чего сказал (точнее написал).
Но какая разница что я написал, если никто(это слово не надо понимать буквально) это всё равно не читает и упорно желает приписать мне свои потаённые мыслишки?
А?:)
Кто же вас правильно поймет, когда вы так вот буквально пишете:
- что код пользовательского интерфейса - не самая важная часть сайта
- и что этот язык используется исключительно для того, для чего не используется реально существующий и использующий этот язык node.js
Извините, если заслонил вам зеркало...
>Я сказал, что JS используется, по большей части, для всякого, связанного с пользовательским интерфейсомJS язык общего назначения. Тот факт что практически все операционные системы, появившиеся в последнее вермя, используют именно его ни о чём не говорит?
>Я сказал, что эта часть кода, на мой взгляд, далеко не самая важная
Не волнуйтесь, добрый гугл, эпл и майкрософт посчитают всё за вас, на мощных языках для истинных профессионалов. Кроме того, они вежливо подскажут когда нужно спать, кушать и пойти в туалет.
> JS язык общего назначения. Тот факт что практически все операционные системы, появившиеся
> в последнее вермя, используют именно его ни о чём не говорит?это какие? перечисляем, не стесняемся.
> Попробуйте хотя бы отключить JS на Опеннете. Вы же не цените свистелки
> и перделки? Вперед!Уже давно без JS на Опеннете. И что?
отключил, брат жив.
что дальше?
> Попробуйте хотя бы отключить JS на Опеннете.никогда и не включал. а что должно было произойти?
я вижу вашу лень даже через слои напусконого сарказмического жира, хорошая попытка.
Включил недавно JS в elinks. Брат жив.
> Сколько возни ради этого JS. Странный это язык — вроде и язык
> как язык, но никогда не видел, чтобы JS использовался для чего-то
> кроме свистелок.
> Ну перделки ещё, говорят, пишут на нём.мода-с. «мы хотим уеб-приложения! чтобы было веселее — мы выберем для этого как можно менее подходящие инструменты, а потом будем героически решать возникшие проблемы!»
Очень хотелось бы услышать о более подходящих инструментах для веб-приложений.
> Очень хотелось бы услышать о более подходящих инструментах для веб-приложений.как я уже говорил, суть такова(tm), что «уеб-приложения» не нужны.
санки, впрочем, это всё предвидели и даже сделали когда-то java webstart, но оно оказалось немного преждевременно. однако сама идея была в миллион миллиардов раз лучше, чем то, что творят сейчас.
А реально вообще дождаться такого, что браузер тянет с сервера байт-код,
а ты у же с какого хочешь языка получаешь этот байткод?
> А реально вообще дождаться такого, что браузер тянет с сервера байт-код,
> а ты у же с какого хочешь языка получаешь этот байткод?naCL почти. у LLVM вроде была похожая технология в академических проектах.
NaCL не то, это же нативный код
Pnacl более подходит под вышеперечисленные требования.
>Pnaclо, это вроде оно
Java не?
Так на сегодняшний день JavsScript и есть этот байткод.А пишут люди на ClojureScript, CoffeeScript и еще сотне разных языков.
Офигеть. А в мозилле что-то подобное будет?
> Офигеть. А в мозилле что-то подобное будет?напиши будет.
Это без всяких приколов - самый реалистичный вариант. Ничем серьёзным мазила для своего браузера не занимается, зато занимается свистелками всерьёз.
http://bugzil.la/813559
> Target Milestone: mozilla20С 20 версии уже есть и работает.