Сравнение производительности сетевых библиотек в Perl

Когда задумал сделать парсер тИЦ для LJ Add/Remove Fiends — решил для начала проверить, какой способ загрузки страниц с показателями тИЦ из скрипта окажется быстрее, поскольку это в любом случае окажется самым узким местом в производительности парсера (любая обработка уже полученных данных, если она сделана без грубых ошибок типа бесконечного цикла, происходит гораздо быстрее загрузки этих данных по сети).

Для начала проверил на локальной машине (первый тест), затем на сервере (второй тест). Воспользовался модулем Benchmark::Timer, по сути он ставит метки начала и конца, после чего вычисляет разницу между ними (то же самое несложно получить с использованием Time::HiRes). У Benchmark::Timer правда есть дополнительная возможность — он может гонять тест до получения результата с заданной обеспеченностью и заданным процентом ошибки.

Третьим тестом, уже из чистого любопытства (поскольку результат был предсказуем) был тест многопоточной загрузки. Естественно этот вариант оказался быстрее любого из однопоточных, в среднем в два раза (при 15 потоках).

Выводы — библиотеки Perl не только выгодней с точки зрения безопасности, но и работают стабильно быстрее вызовов системных утилит. Самую медленную загрузку показал Wget, основывать парсер на нём — явно плохая идея. Многопточность естественно вне конкуренции. Подробности ниже.

(далее…)

Wget(rc) и flashgot — памятка

Настроил сегодня на работе wget в качестве загрузчика в firefox (при помощи плагина flashgot). Теперь и с файлообменников качает, и имена закачиваемым файлам даёт нормальные, а не из имени ссылки. Чтобы не забыть в дальнейшем, что да как и при необходимости иметь лёгкий доступ к описанию процесса — сохраню памятку тут. Что удобно — wget под Win можно не только из cygwin использовать, но и нативную сборку скопировать например в C:\Windows\System32 (я на флешке виндовую сборку вгета ношу — один файлик маленький, установки не требует? — очень удобно когда стоит только IE на машине, который докачку поддерживать видимо никогда не научится).
(далее…)