Разработчики представили Crankshaft, новую инфраструктуру компиляции для JavaScript двигателя V8 браузера Google Chrome. С помощью агрессивной оптимизации, Crankshaft значительно повышает производительность ресурсоемких приложений, работающих на основе JavaScript. Данное улучшение быстродействия позволит повысить скорость работы и отзывчивость веб-страниц и приложений, построенных с применением JavaScript.
Сравнение браузера Google Chrome с Crankshaft и без в тестовом пакете V8 benchmark:
Как видно из результатов, наибольшая производительность была достигнута в тестах Richards, DeltaBlue и Crypto. Это говорит о том, что существенно увеличилась скорость выполнения арифметических операций, вызовы функций и доступа к свойствам. В целом, Crankshaft повышает производительность V8 на 50 % на наборе тестов V8. Это самый большой прирост производительности какой был достигнут с 2008 году в браузере Google Chrome:
В дополнение к улучшению пиковой производительности, измеряемой в наборе тестов V8, Crankshaft также улучшает время запуска веб-приложений, таких как GMail. Тест page cycler показал, что Crankshaft улучшает производительность Google Chrome на 12 % для страниц, которые содержат значительное количество JavaScript-кода.
В Crankshaft используется адаптивная компиляции для улучшения как времени запуска, так и максимальной производительности. Идея заключается в значительной степени оптимизации кода, который часто выполняется, в тоже время код, который редко используется - просто не подвергается оптимизации, за счёт чего также появляется выигрыш в производительности. Из-за этого такие тесты как SunSpider покажут незначительное улучшение с Crankshaft.
Crankshaft имеет четыре основных компонента:
Базовый компилятор, который используется для всего кода. Базовый компилятор быстро генерирует код и не использует усиленную оптимизацию. Компиляция с базовым компилятором работает вдвое быстрее чем с V8 компилятор, используемый в Chrome 9, и генерирует на 30 % меньше кода.
Профайлер выполнения, который контролирует работающую систему и определяет горячей код, т.е. код, который повторяется значительное количество раз подряд.
Оптимизирующий компилятор, который компилирует и оптимизирует горячий код, определённый профайлером выполнения.
Поддержка деоптимизации, позволяет отказаться от оптимизированного кода, если он выполняется медленнее чем оригинальный код.
V8 с Crankshaft для 32-разрядной архитектуры Intel доступен в Google Chrome Canary. Работа над поддержкой архитектур ARM и 64-bit уже началась.