Браузер — логическая платформа для разработки, но сделать его таким же быстрым, как настольный компьютер, — это ключ к тому, чтобы сделать его жизнеспособной платформой. Новый набор тестов дает нам представление о том, насколько хорошо дела идут. Приближается ли JavaScript к нативному?
Джоэл Уэббер провел несколько тестов с использованием Box2D в прошлом году и только что повторил эту задачу с некоторыми интересными результатами.
Принимая реализацию C за стандарт, вы можете увидеть, насколько быстро работают другие, по сравнению. Два, которые, вероятно, представляют наибольший интерес, — это pNaCL и asm.js, работающие в Firefox. Они представляют собой попытки Google и Mozilla заставить браузерные приложения работать так же быстро, как нативные приложения.
Учитывая, что pNaCL ближе всего к C в браузере, его коэффициент производительности 1,22 не так уж и удивителен. Но asm.js ближе к 1.51, чем вы думаете. Также удивительно то, что asm.js в Chrome набрал 2,54, а в IE11 — 4,46, но в Safari 7 он получил ужасные 127. Возможно, это хорошая новость, что Apple недавно объявила об улучшении скорости в Safari 8.
Обратите внимание, что в Chrome, IE и Safari asm.js не имеет специальной оптимизации, как в Firefox, и поэтому эти цифры представляют собой вид производительности, которым управляет необработанный JavaScript. Другими словами, Firefox улучшает показатели Chrome с 2,54 до 1,51 за счет оптимизации asm.js.
Выходя за рамки JavaScript, результаты также показывают, что Java на уровне 2,67 быстрее, чем Dart, работающий в браузере (Dartium) на уровне 5,05, что намного быстрее, чем Dart, скомпилированный для JavaScript 14.3.
По сравнению с прошлогодними результатами почти все улучшилось, особенно у самых медленных исполнителей.
Полные результаты приведены ниже:
Источник: максимально простой, но не более простой блог
Вы можете найти все данные на веб-сайте Джоэла вместе с множеством интересных интерпретаций и комментариев.
Однако из диаграммы сразу видно, что pNaCl и asm.js — это две технологии, за которыми следует следить, и две технологии, которые следует учитывать, если вы хотите создавать в приложениях браузера, но обратите внимание, что только asm.js работает во всех браузерах.