Какой браузер быстрее всего запускает JavaScript? Последний ответ может вас удивить!
Какой самый важный компьютерный язык на планете? Ответ, если вы проглотите, что HTML5-это будущий аргумент, должен быть JavaScript.
Нравится вам это или нет, JavaScript-это то, на чем будет написано большинство веб-приложений в не слишком отдаленном будущем. Если вы посмотрите на любой из экспериментальных и демонстрационных сайтов для HTML5, вы быстро поймете, насколько это большой скачок от использования его в качестве языка сценариев, который выполняет небольшие задания на веб-страницах. JavaScript-это будущее, и, как следствие, важно, чтобы браузеры хорошо справлялись с его реализацией. Короче говоря, JavaScript должен вырасти и стать надежным и очень быстрым.
Недавно производители браузеров осознали эту, возможно, неприятную истину и начали рекламировать свои собственные движки JavaScript с такими именами, как SpiderMonkey, Rhino, Chakra и V8. Ясно, какой браузер быстрее запускает JavaScript, может быть именно тем, что нужно, чтобы отличить один браузер от другого в войне, чтобы быть наиболее используемым.
Очевидно, что необходим хороший тест, который можно использовать для ранжирования производительности браузеров. Это не только покажет, какой браузер предпочтительнее, но и для каких из них вам действительно нужно настроить код. Это также позволило бы программистам JavaScript настраивать там код, предпочитая одну идиому другой. Большая проблема заключается в том, что результаты, которые вы получаете, зависят от того, что именно вы измеряете — если вы сильно взвешиваете обработку строк, то вы получаете один результат, управление объектами, и вы получаете другой. Обычное решение состоит в том, чтобы использовать очень большой набор операций и попытаться прийти к какому — то статистическому среднему значению, но это очень сложно, и, по словам (почти) доктора Грегори Хауса, «Каждый эталон лжет»
Теперь Дуглас Крокфорд из JSON и JavaScript: The Good Parts fame (среди прочего) вступил в борьбу и объявил, что IE 10 является самым быстрым браузером и в пять раз быстрее Chrome!
Производительность JavaScript
(Чем меньше, тем лучше)
И если вам нужны точные детали:
Теперь, прежде чем вы сделаете вывод, скажем, что Chrome-это мусор при запуске JavaScript, вам нужно узнать немного больше о тесте. Что сделал Крокфорд, так это использовал свою собственную программу JSLint, хорошо известную проверку стиля JavaScript, работающую на собственном исходном коде. Аргумент заключается в том, что JSLint-это хорошо написанная программа JavaScript, выполняющая множество манипуляций со строками и общую внутреннюю работу, но то, что она не делает, — это манипуляция DOM. Это программа, требующая больших вычислительных затрат.
Большинство программистов JavaScript ожидали бы, что Chrome будет первым в списке, поскольку его двигатель коленчатого вала считается разработанным для скорости, но вполне вероятно, что он был оптимизирован для того типа кода, который обычно пишет Google, т. Е. очень объектно — ориентированный и функциональный. Похоже, что оптимизация коленчатых валов на лету не работает с JSLint.
Так это последний выстрел в войне эталонов? Вы почти слышите, как Google и другие инструменты работают над тем, чтобы JSLint быстрее работал в их браузере. Как только у вас будет ориентир, цель состоит в том, чтобы сократить расстояние между вами и другими и быть лучшим, если сможете.
Интересно, что Крокфорд цитирует статью «JSMeter: измерение поведения JavaScript в дикой природе» в качестве оправдания для введения еще одного эталона. На самом деле статья представляет собой хорошо сбалансированный отчет об измерении JavaScript с использованием реальных веб-сайтов с плохо написанным JavaScript, т. Е. О том, что происходит с кодом JavaScript в дикой природе, и на самом деле это не то, что измеряют бенчмарки:
«Мы задокументировали многочисленные различия в поведении, и из этих измеренных различий мы делаем вывод, что результаты, основанные на эталонных показателях, могут ввести в заблуждение разработчиков движка JavaScript.»
Это интересная проблема, но потребуется больше, чем несколько запусков с одной большой программой, чтобы ранжировать движки JavaScript или предоставить информацию, необходимую для их улучшения. Должны ли тесты измерять, насколько хорошо движки JavaScript выполняют существующий код? Или они должны сосредоточиться на типе кода, который станет веб-приложением будущего?