среда, 5 ноября 2008 г.

Производительности JavaScript

Недавно в очереди моих задач появилась задача измерения производительности JavaScript. Реальная задача была сформулирована как «найти оптимальный путь разработки нового приложения, чтобы не сильно ограничить область применения и не иметь существенных проблем с производительностью (скоростью / объёмом данных, которые приложение сможет обработать)». Как правило разрабатывая определённые приложения у вас есть выбор – сделать программное обеспечение либо с «desktop» либо с web интерфейсом.


Оговоримся, что естественно, такой выбор присутствует не всегда. Если вам необходимо работать с широкой аудиторией, то единственным вариантом часто оказывается web интерфейс. Если мы имеем дело с локальным приложением или когда мы контролируем и можем хорошо предсказать среду применения нашего программного обеспечения (например имеем дело с конкретной фирмой) то часто разрабатывается desktop (или так называемое Windows) приложение - прежде всего из-за возможности сделать его быстрее, и больших возможностей для создания интерфейса с точки зрения набора элементов ввода и вывода данных (controls).

Поскольку наши знания и предыдущий опыт в основном связан с разаработкой приложений на базе Microsoft технологий и имея задачу написать приложение с объёмным интерфейсом ввода данных (как например MS Excel или Google spreadsheets), мы решили сравнить следующие технологии: JavaScript (Web), Visual Studio 2005 C# / .Net 2.0 и Visual Basic 6.0 (разработка «desktop» приложений).


Первым шагом был поиск в Интернете того, что было уже проделано, чтобы не изобретать велосипед. В течении этого шага я наткнулся на эту станицу позволяющую измерить производительность JavaScript-а на своём компьютере, которая достаточно просто сделано – в принципе для каждого из нас не составит огромного труда создать тоже самое.

Сделав нечто подобное в VB6 и VS2005/C# я получил следующие результаты сравнивая деление цифр integer типа:


- JavaScript в 5 раз медленее чем VB6

- JavaScript в 100 times раз медленее чем VS2005/C#


Результаты выглядят достаточно логично так как JavaScript является интерпретируемым языком (не компилируется в executable) и поэтому существенно медленее.

2 комментария:

Vlad комментирует...

А какие у тебя данные для VB6, C# и JavaScript? У меня на машине JavaScript за 36 мс завершил тесты. Еще результаты очень зависят от JavaScript движка. Например новый движок от FireFox будет работать со скоростью неоптимизированного C кода. По крайней мере это то что они обещают.

Deniss комментирует...

У меня получалось - 213с JavaScript, гдето 34с VB6 и где-то 2с C#

Хотелось бы, чтобы тоже самое сказал MS o IE8