- PVSM.RU - https://www.pvsm.ru -

Недоволен скоростью джаваскриптов? — Подожди год-полтора, и это пройдёт!

Недоволен скоростью джаваскриптов? — Подожди год полтора, и это пройдёт!Напоминаю (потому что это наверняка подзабылось), что 22 мая 2012 года [1] я экспериментировал с чтением заголовков фидонетовской эхопочты (хранимой в формате JAM) при помощи собственного модуля, сочинённого для Node.js (на основе подвернувшегося движка jParser, документацию по которому перевёл чуть раньше [2]).

Тогда, прогоняя тестовое чтение на одноядерном Pentium IV (2,2 ГГц), я остался недовольным скоростью: требовалось три-четыре секунды на то, чтобы считать 8222 заголовков из архива всего одной эхоконференции, ведущегося с марта 2007 года.

На нынешней неделе у меня снова дошли руки до исходного кода того модуля; и я начал с того, что перенёс прежний тест на движок Mocha [3] и передал тестирование на сервер Travis CI [4], указав в файле .travis.yml [5] такие настройки, которые обеспечивали бы тестирование на трёх последовательных версиях движка Node.js — на 0.6, на 0.8 и на 0.10.

Оказалось, что разница в скорости видна невооружённым глазом:

При взгляде на эти результаты сперва возникает соблазн видеть арифметическую прогрессию (три секунды → две секунды → одна секунда) с напрашивающимся выводом о том, что в следующей версии движка Node тест вообще станет срабатывать мгновенно.

На самом деле, конечно же, результат свидетельствует только о том, что в версии Node 0.8 тест срабатывает примерно в полтора раза быстрее, чем в предыдущей версии (0.6), а в версии Node 0.10 — даже в два раза быстрее, чем в предыдущей (0.8).

Но и то неплохо.

Кроме того, нынешней весною я себе приобрёл более новый компьютер на основе четырёхъядерного процессора i7-3770, и на нём тот же тест занимает время ещё меньшее — оно ближе к половине секунды, чем к целой секунде:

[скриншот]

Оно и понятно: Travis-то ведь пользуется виртуальными машинами, а я реальною.

Совокупность изложенных выше наблюдений позволяет уверенно и радостно утверждать, что Node.js резко ускоряется от версии к версии (вероятно, в том числе и за счёт роста скорости движка V8, на котором Node основывается), и в сочетании с ростом производительности компьютеров это позволяет придерживаться выжидательной тактики, вынесенной мною в заголовок.

Можно тратить и своё время на оптимизацию работы своих джаваскриптов, но только если больше нечем серьёзно улучшить их, и только если вы уверены в том, что покажете сравнимый результат (ускорение в полтора-два раза за полгода-год), а не то для конечных пользователей небольшое ускорение скрипта всё равно останется малозаметным на фоне резкого ускорения движка за то же время.

Автор: Mithgol

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/node-js/43150

Ссылки в тексте:

[1] 22 мая 2012 года: http://habrahabr.ru/post/144268/

[2] чуть раньше: http://habrahabr.ru/post/144008/

[3] Mocha: http://visionmedia.github.io/mocha/

[4] Travis CI: http://about.travis-ci.org/

[5] .travis.yml: https://github.com/Mithgol/node-fidonet-jam/blob/5bac10eb0e2fd1121def0e306c69cf70b66150ec/.travis.yml

[6] На движке Node версии 0.6.21: https://travis-ci.org/Mithgol/node-fidonet-jam/jobs/11144278

[7] На движке Node версии 0.8.25: https://travis-ci.org/Mithgol/node-fidonet-jam/jobs/11144279

[8] На движке Node версии 0.10.12: https://travis-ci.org/Mithgol/node-fidonet-jam/jobs/11144280

[9] Источник: http://habrahabr.ru/post/193482/