Какой язык программирования наиболее эффективен для парсинга сайтов

Мы решили провести этот маленький тест, чтобы определить какой из популярных языков программирования наиболее эффективен по скорости, использованию CPU и RAM для парсинга сайтов. Для максимальной объективности, мы попытались написать все скрипты в одном ключе, и запускали их в режиме однопоточности. Каждый парсер работал 10 минут на одинаковой машине, практически в одно и то же время. Характеристики используемого стенда: Linux Ubuntu 14.04 (под Virtual Box), 1 CPU Core, 4Gb RAM.

Мы сравнили следующие языки программирования: мета-язык сервиса Diggernaut (базирующийся на Golang), Perl, PHP5, Python 2.7, Python + Scrapy, Ruby. Как источник мы использовали сайт Департамента здоровья США.

Посмотрим на график по скорости работы:

chart1

Мы видим, что у нас есть три лидера: Diggernaut забрал почти 3 тысячи страниц, Ruby — примерно 2.5 тысячи, а Python + Scrapy — около 1.5 тысяч. Другие языки на их фоне выглядят действительно медленными.

Однако, если мы посмотрим на график использования CPU, мы увидим немного другую картину:

chart2

Первое место здесь уходит к PHP5, использующему только лишь 2.5% CPU, за ним идет Diggernaut с 3.5% и третьим замыкает гонку Perl приблизительно с 4%. Другие языки отстают совсем не намного, за исключением Python + Scrapy — 11% это слегка много, мы думаем.

И последний испытываемый параметр — использование RAM:

chart3

Победителем в этом измерении является Diggernaut с 26Mb, за ним идет Perl с 29Mb, и замыкает тройку PHP5 с 39Mb. Ruby здесь показал себя полным аутсайдером со 154Mb.

Чтобы обобщить все тесты, мы оценим каждое испытание по 100-бальной системе (лучший результат получит 100 баллов, хужший 0, остальные соответственно своим результатам) и затем возьмем среднее арифметическое по всем 3 испытаниям.

chart4

Diggernaut с бакендом на Golang является чистым победителем в этом испытании. Также мы хотели бы упомянуть тот факт, что времени на разработку парсера для Diggernaut в общем было потрачено в 1.5-2 раза меньше, чем для других языков.

Для того, чтобы не быть голословными, мы прикрепляем использованные в этом тесте скраперы: scripts

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *