Напоминаю (потому что это наверняка подзабылось), что 22 мая 2012 года я экспериментировал с чтением заголовков фидонетовской эхопочты (хранимой в формате JAM) при помощи собственного модуля, сочинённого для Node.js (на основе подвернувшегося движка jParser, документацию по которому перевёл чуть раньше).
Тогда, прогоняя тестовое чтение на одноядерном Pentium IV (2,2 ГГц), я остался недовольным скоростью: требовалось три-четыре секунды на то, чтобы считать 8222 заголовков из архива всего одной эхоконференции, ведущегося с марта 2007 года.
На нынешней неделе у меня снова дошли руки до исходного кода того модуля; и я начал с того, что перенёс прежний тест на движок Mocha и передал тестирование на сервер Travis CI, указав в файле .travis.yml такие настройки, которые обеспечивали бы тестирование на трёх последовательных версиях движка Node.js — на 0.6, на 0.8 и на 0.10.
Оказалось, что разница в скорости видна невооружённым глазом:
- На движке Node версии 0.6.21 тест работал 3145 миллисекунд.
- На движке Node версии 0.8.25 тест работал 2211 миллисекунду.
- На движке Node версии 0.10.12 тест работал 1006 миллисекунд.
При взгляде на эти результаты сперва возникает соблазн видеть арифметическую прогрессию (три секунды → две секунды → одна секунда) с напрашивающимся выводом о том, что в следующей версии движка Node тест вообще станет срабатывать мгновенно.
На самом деле, конечно же, результат свидетельствует только о том, что в версии Node 0.8 тест срабатывает примерно в полтора раза быстрее, чем в предыдущей версии (0.6), а в версии Node 0.10 — даже в два раза быстрее, чем в предыдущей (0.8).
Но и то неплохо.
Кроме того, нынешней весною я себе приобрёл более новый компьютер на основе четырёхъядерного процессора i7-3770, и на нём тот же тест занимает время ещё меньшее — оно ближе к половине секунды, чем к целой секунде:
Оно и понятно: Travis-то ведь пользуется виртуальными машинами, а я реальною.
Совокупность изложенных выше наблюдений позволяет уверенно и радостно утверждать, что Node.js резко ускоряется от версии к версии (вероятно, в том числе и за счёт роста скорости движка V8, на котором Node основывается), и в сочетании с ростом производительности компьютеров это позволяет придерживаться выжидательной тактики, вынесенной мною в заголовок.
Можно тратить и своё время на оптимизацию работы своих джаваскриптов, но только если больше нечем серьёзно улучшить их, и только если вы уверены в том, что покажете сравнимый результат (ускорение в полтора-два раза за полгода-год), а не то для конечных пользователей небольшое ускорение скрипта всё равно останется малозаметным на фоне резкого ускорения движка за то же время.
Автор: Mithgol