The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"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

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру