Разработчики компании Mozilla продолжают работать над продвижением производительности браузера Firefox и его выводе на качественно новый уровень.
С этой целью они создали новый javascript-двигатель под названием IonMonkey, а, кроме того, графический двигатель Azure.
JS-двигатель IonMonkey вмещает в себе улучшенную сборку мусора от обрабатываемого javascript-кода, что оптимизирует работу памяти. А, кроме того, IonMonkey является JIT-компилятором.
Подобно Crankshaft, используемого в Google Chrome, двигатель IonMonkey поможет добиться дополнительной оптимизации, такой как удаление мёртвого (неиспользуемого) кода, подстановка функций.
В настоящее время проект IonMonkey находится на стадии проектирования. С целью выявления наиболее востребованных возможностей и функций разработчики проводят эксперименты.
Что касается графического двигателя Azure, то он создан с целью заменить собой Cairo, который отчасти исчерпал свои возможности в улучшении производительности отрисовки контента в Интернет-обозревателе Firefox.
Разработчики возлагают надежды на то, что Azure позволит продолжить движение в сторону увеличения производительности.
В настоящий момент Firefox по умолчанию выполняет отрисовку в несколько этапов. Сначала контент для вывода делится на отдельные независимые слои, каждый из которых отрисовывается при помощи Cairo. Этот двигатель использует доступный в исполняемой операционной системе графический 2D API. Причем аппаратное ускорение будет задействовано только в том случае если оно доступно.
Отойдем не много от темы и почитаем про такой продукт, как виртуальная атс, который, по заявлению портала Mango-Office, позволит вам получить через интернет широкий функционал атс для бизнеса.
На сегодняшний день аппаратное ускорение является доступным только в Windows Vista и Windows 7, однако, компания Mozilla хочет расширить поддержку аппаратного ускорения и на остальные платформы, в том числе и мобильные.
Затем, по окончании отрисовки с помощью доступного 3D API (OpenGL или Direct3D) или Cairo все слои собираются воедино и результат выводится на дисплей.
В связи с тем, что в используемом типе данных Cairo и Direct2D API имеются различия, для вызова функций во время отрисовки графики приходится приводить результаты из чисел с фиксированной точкой к числам с плавающей точкой и обратно. А это увеличивает бесполезную нагрузку.
Помимо этого, во время работы с посторонними API в Cairo добавляются новые издержки, что естественно ухудшает производительность во время работы с графикой.
Разработчики из Mozilla приняли решение обойтись без всех этих ненужных преобразований и отслеживания состояния. По их замыслу новый двигатель Azure должен быть как можно ближе к Direct2D и в то же время позволять реализовывать функционал OpenGL и Direct3D 9.
Эксперименты подтвердили тот факт, что Azure даже на стадии разработки оказался быстрее Cairo.
На случай если Azure будет вести себя нестабильно или вообще не оправдает возложенных на него надежд Cairo все же останется в обозревателе Firefox. Новые двигатели уже внедреннены в последние nightly-сборки firefox 7.