PDA

Просмотр полной версии : Для JavaScript-движка Firefox создается новый JIT-компилятор


Suicide
28.02.2010, 13:15
В рамках проекта JägerMonkey (https://wiki.mozilla.org/JaegerMonkey) разработчики Mozilla ведут работу по интеграции в JavaScript движок SpiderMonkey легкого контекстно-ориентированного многопоточного JIT-компилятора. Для формирования на лету машинного кода в JägerMonkey решено задействовать открытый ассемблер Nitro JavaScript JIT, созданный компанией Apple для WebKit. Nitro распространяется под совместимой с Firefox лицензией и написан на языке C++, что упрощает процесс его интеграции. Код Nitro уже адаптирован для запуска с использованием системы сборки и набором библиотек Mozilla.

Вторым ключевым компонентом JägerMonkey является работающий на более высоком уровне JIT-компилятор методов, созданием которого занимаются разработчики Mozilla. В будущем, после проведения первичной стадии тестирования, работа будет сосредоточена на интеграции JägerMonkey с JIT-подсистемой движка TraceMonkey. По средним оценкам, в текущем виде JIT-компилятор JägerMonkey позволяет увеличить производительность выполнения JavaScript на 18%, после доработки планируется увеличить производительность еще на 10%. Особенно новый JIT эффективен для оптимизации регулярных выражений.

Работа JIT-компилятора в движке TraceMonkey, который уже используется в последних версиях Firefox, построена на идее "tracing"-оптимизации, суть которой в сохранении плана выполнения скрипта с последующим использованием бинарного кода при выполнении подобных блоков. При этом происходит преобразование циклов и сложных методов в вид линейного потока инструкций. Подобный метод позволяет значительно ускорить выполнение определенных операций, например показывает девятикратный прирост производительности в тесте math-cordic из пакета SunSpider. При работе реального кода, специально не оптимизированного для развертывания в линейное представление инструкций, эффективность "tracing"-оптимизации значительно снижается. Например, тест "date-format-tofte" в котром есть вызов "eval" работает быстрее всего на 5%.

Некоторые разработчики сравнивают TraceMonkey с ракетным бустером, позволяющим обеспечить значительное ускорение, но в коротком промежутке времени. Для скриптов с большим числом разветвлений, использованием "eval" и комбинированием разных типов (для каждой комбинации типов и каждого ветвления создается свой трассировочный план выполнения, если комбинаций 1000, то и планов будет 1000), эффективность TraceMonkey оставляет желать лучшего. Предлагаемый к реализации новый JIT-компилятор менее эффективен для некоторых ситуаций, но позволяет ускорить выполнение всех программ на JavaScript, не требуя специального оформления кода. При комбинировании обеих подходов в одном JavaScript-движке можно достичь действительно значительного ускорения при выполнении любых скриптов.

28.02.2010
http://www.opennet.ru/opennews/art.shtml?num=25608

http://blog.mozilla.com/dmandelin/2010/02/26/starting-jagermonkey/

LEOSMIR
28.02.2010, 13:19
Хм... Вечно что то новое им нужно....
По мне так, и так всё отлично.

Suicide
28.02.2010, 13:21
Хм... Вечно что то новое им нужно....
По мне так, и так всё отлично.
Это закономерно. Если стоять на месте, то их просто "сожрут" конкуренты.
Для многих выглядит на отлично, но таки..рейтинги на первое место не помещают мозилу..значит есть куда двигаться и развиваться etc

walter
28.02.2010, 13:33
Mozilla начинает потихоньку развиваться. хм.

какие интересно конкуренты противостоят ?)

Suicide
28.02.2010, 13:40
Mozilla начинает потихоньку развиваться. хм.

какие интересно конкуренты противостоят ?)

Не начинает, а развивается уже довольно долгое время. Причём, учитывая их политику, довольно интенсивно.
А что непонятно по конкурентам? Опера, Сафари, Хром etc

root_sashok
28.02.2010, 15:33
А остальные тихо от всех готовят свои новые продукты :)

MC_Bandit
28.02.2010, 16:17
Это что то типо форка от Mozill'ы. Хотя в принципе нe плохое решение.НО это не главная проблема FF.Есть куда более важнее.

winlogon.exe
01.03.2010, 10:50
Молорики че