Показано с 1 по 1 из 1.

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

  1. #1
    Visiting Helper Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    11.12.2006
    Сообщений
    3,699
    Вес репутации
    1810

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

    В рамках проекта JägerMonkey разработчики 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-движке можно достичь действительно значительного ускорения при выполнении любых скриптов.

    The worst foe lies within the self...

  2. Реклама
     

Похожие темы

  1. Mozilla Firefox JavaScript Prompt Spoofing Weakness
    От Shu_b в разделе Уязвимости
    Ответов: 0
    Последнее сообщение: 09.12.2009, 10:27
  2. Personas- новый костюм для браузера FireFox
    От drongo в разделе Наши статьи
    Ответов: 0
    Последнее сообщение: 25.07.2009, 17:35
  3. Новый Firefox станет «намного большим»
    От ALEX(XX) в разделе Другие новости
    Ответов: 1
    Последнее сообщение: 17.03.2009, 22:08
  4. Firefox 3.0.5 - новый сервисный релиз
    От SDA в разделе Софт - общий
    Ответов: 2
    Последнее сообщение: 18.12.2008, 18:02
  5. Линус подумывает о переходе на другой компилятор C
    От ALEX(XX) в разделе Другие новости
    Ответов: 0
    Последнее сообщение: 26.10.2007, 19:11

Метки для этой темы

Свернуть/Развернуть Ваши права в разделе

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Page generated in 0.00079 seconds with 18 queries