JavaScript работает медленно


Границы боевых действий составлены — JavaScript v Native. Некоторые программисты считают, что подойдет только нативный код, а C ++ — это язык, который следует использовать. Разумно ли это, учитывая, насколько быстрее стал JavaScript?

JavaScript в браузере становится быстрее, и это привело к некоторым утверждениям, что он настолько быстр, что вам больше ничего не нужно. Будь то 3D-игры или сложные симуляции, есть примеры того, как JavaScript выполняет впечатляющую работу, но насколько быстрее конкурирующие технологии? Какую часть машины мы выбрасываем, используя JavaScript?

Джоэл Уэббер провел несколько сравнений JavaScript в различных движках, Java и нативном коде в различных средах. Используемый тест — Box2D, широко используемый физический движок, который отвечает за то, как вы вводите Angry Birds. Причина выбора в том, что это сложный фрагмент кода, который не поддается простой оптимизации. Он также доступен во многих различных формах, будучи перенесен во все основные среды. Не было предпринято никаких попыток сделать тесты, работающие в разных системах, каким-либо образом сопоставимыми, но, учитывая важность кода, разумно предположить, что они представляют собой разумные попытки создать что-то эффективное. Это очень реальное сравнение того, как работают разные системы.

Тест использовался для сравнения производительности при использовании нативного C ++, нативного API Google Chrome NaCl, Java и переведенного вручную JavaScript, работающего в ряде браузеров. Также были протестированы JavaScript, сгенерированные из C ++ и Java.

Тесты показали, что системы разделены на три группы: собственный код на уровне около 5 мс, код JVM около 10 мс и JavaScript около 100 мс.

Источник

Хотя JavaScript может быть впечатляюще быстрым, обратите внимание, что он более чем в 20 раз медленнее, чем собственный код.

Из подходов с использованием собственного кода NaCl в Chrome17 был медленнее, но сравним с необработанным C ++. В остальном настоящим сюрпризом было то, что разброс результатов, вызванный разными браузерами, не был таким большим, как разница между созданным вручную и автоматически созданным кодом JavaScript, причем автоматически созданный был быстрее. Наибольшую производительность в группе JavaScript показал код C ++, соответствующий JavaScript с использованием Mandreel.

Таким образом, реализация JavaScript — это далеко не способ достичь производительности нативного кода. Даже высокооптимизированная Java JVM примерно в три раза медленнее, чем собственный код.

Пожалуй, не стоит удивляться результатам. Однако, как и во всех тестах, это всего лишь показатель положения вещей — использовалась только одна машина и одна строго определенная неоптимизированная задача. Результаты либо подтвердят ваши предубеждения, либо станут еще одним свидетельством, которое вы отвергаете как ложное.


Добавить комментарий