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

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

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

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

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

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

chart1

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

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

chart2

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

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

chart3

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

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

chart4

Golang является чистым победителем в этом испытании. Именно поэтому он был выбран в качестве бакэнда для платформы Diggernaut.

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

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