Opera представила новый движок для JavaScript – Carakan

Эта новость начинает распространяться потихоньку,  что странно, в условиях взрывного развития веб приложений с большим количеством JavaScript. Так теперь важным критерием оценки браузера становится не только то как он соответствует стандартам W3C, работает с CSS, DOM, но и насколько быстро он работает с JavaScript. Последним в эту “войну” вступил Google с V8, ну а теперь Opera собирается обновить свой движок. Хотя не очень понятно, как это может помочь увеличить их долю рынка. Но тем не менее.

Для начала стоит посмотреть назад в недалёкое прошлое, когда Opera выпустила движок Futhark, входящий в соств Presto (2003 год). На тот момент он был самым быстрым на рынке, хотя никто особо не придавал значения этому языку. Сравнения по производительности стоит посмотреть в статье JavaScript Performance Rundown Джона Ресига (John Resig). Джон получил интересные результаты из которых видно, что сейчас движок браузера Opera не блещет. В отличие от него Carakan построен на других принципах и обещает быть не только быстрым, но и экономичным. Для этого уже сделано следующее:

1. Принцип обработка в стеке заменен на обработку в регистрах (ничего общего с регистрами процессора). Фактически, сейчас инструкции псевдокода JS забирают значения из стека и помещают их обратно после обработки, доступ идет только к верхнему элементу, что сказывается на производительности. В Carakan динамечный стек со значениями заменен на фиксированный блок значений и инструкции псевдокода могут обращаться к любой ячейке.

2. Генерация нативного кода. Это, как я понял, попытка решить проблемы с арифметикой за счет расширения стандартных возможностей ECMAScript. Пока еще ведуться работы для ARM, для x86 (32 и 64 бита) уже всё готово.

3. Автоматическая классификация объектов. Смысл в том, что на уровне движка создаётся виртуальное наследование при котором каждому базовому объекту из ECMAScript приписывается класс, описывающий его. Дальше во время жизни и модификации объектов движок классифицирует их по первичным прототипам (тем самым объектам из ECMAScript). В результате это позволяет использовать меньше памяти (как то очень уж это оптимистично) и при поиске объектов кешировать результаты. Если это будет реализовано добротно, то производительность Carakan в Cloud Apps будет действительно потрясающая.

Дженс Линдсром (Jens Lindström) пишет, что даже без нативной генерации кода скорость Carakan в два с половиной раза больше, чем последняя версия Presto по тесту SunSpider. А вот при включении нативной генерации скорость может быть выше в 5 или 50 раз (или 500, почему бы нет?). Но обещать что либо еще слишком рано.

Leave a Reply

Your email address will not be published. Required fields are marked *