Профилируйте скрипт узла, который передает данные - PullRequest
0 голосов
/ 02 декабря 2018

Я написал сценарий узла, который передает ~ 400K строк CSV-строк из двух файлов с использованием модулей csv npm (csv-parse, csv-stringify, stream-transform) с использованием подхода pipe и записи водин выходной файл CSV.Для каждой строки определенные поля удаляются, изменяются или добавляются. (*) Я также использую Ramda в надежде, что это сделает сценарий распараллеливаемым и более производительным.

Во-первых, я принудительно parse и transform переходят в последовательный режим с помощью {parallel: 1} и получают следующие результаты:

$ time node index.js
INFO: loaded 252 geonames.
loadGeoNames: 50.537ms

real    3m1.603s
user    2m49.417s
sys     0m4.578s

Теперь, с 50 параллельными обратными вызовами, я сохраняю 8 секунд:

$ time node index.js
INFO: loaded 252 geonames.
loadGeoNames: 43.098ms

real    2m53.249s
user    2m47.690s
sys     0m3.554s

Затем я изменил это значение на 100 и получил следующие результаты:

$ time node index.js
INFO: loaded 252 geonames.
loadGeoNames: 47.953ms

real    2m46.461s
user    2m42.621s
sys     0m3.578s

Так что разница в 15 секунд невелика.Кроме того, читая 400K строк (из двух файлов CSV) и записывая их в один файл (также CSV), я бы ожидал, что это будет быстрее, но у меня нет особого опыта в этой области.

У меня нетИдея, что ожидаемая производительность должна / может быть.Как я могу узнать, где скрипт тратит свое время?

Сам скрипт находится здесь: https://github.com/jfix/geoip-converter/blob/master/index.js

FWIW, я запускаю это на Macbook Pro 2010 с 8 ГБ оперативной памяти.

(*) В частности, скрипт преобразует данные GeoIP из одного формата в другой, поскольку MaxMind прекратил обновлять так называемый «устаревший» формат, но можно преобразовать новый формат (распространение несколькихфайлы) на старый, что я и делаю здесь.Я добавил некоторую справочную информацию в README репо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...