Сравнение Производительности: Curl, Php Curl, Php Socket, Python Pycurl

У меня впереди проект, модуль которого большую часть времени будет работать с другим сервером, отправляя ему GET-запросы.

Я провел тесты, чтобы определить, какой метод будет быстрее получить страницу (в рамках предложенных технологий проекта).

Первые 3 теста: каждый метод выполнял подряд 50 запросов к одному сайту.



Сравнение производительности: Curl, php Curl, php Socket, Python pycurl



Сравнение производительности: Curl, php Curl, php Socket, Python pycurl

Поясню, что завиток — это процесс получения страницы с помощью консольной утилиты завитка в Linux. Все тесты проводились на Linux. Был еще пятый тест — вызов curl из php через exec, но эту чушь я отбросил.

Если усреднить тесты, то получится следующий результат:

Сравнение производительности: Curl, php Curl, php Socket, Python pycurl

Места:

  1. PHP-сокет
  2. завиток
  3. Python Pycurl
  4. PHP Curl
Если мы начнем с меньшего значения, результат изменится:

Сравнение производительности: Curl, php Curl, php Socket, Python pycurl

  1. PHP-сокет
  2. PHP Curl
  3. Python Pycurl
  4. завиток
Консольный Curl без языка меня после таких тестов уже не интересует, но кто быстрее php+curl или python+pycurl? Еще 4 теста, в которых участвовала только эта парочка:

Сравнение производительности: Curl, php Curl, php Socket, Python pycurl



Сравнение производительности: Curl, php Curl, php Socket, Python pycurl

php честно работал быстрее во всех 4 тестах.



Результаты теста

Используйте библиотеку Curl для простых запросов GET. — это снижение скорости выполнения почти в 2 раза по сравнению с работой через сокеты.

Кроме того, мы заметили, что Python с библиотекой pycurl работает немного медленнее, чем php с Curl. Возможно, тесты в чем-то предвзяты, если вы считаете, что это так, обоснуйте это в комментариях.



Код для этих тестов



Небольшая программа на языке C
Запускает программу, переданную в параметре, и измеряет время ее работы в миллисекундах.

   

#include <sys/time.h> #include <stdlib.h> struct timeval tv1, tv2, dtv; struct timezone tz; //time_ functions from http://ccfit.nsu.ru/~kireev/lab1/lab1time.htm void time_start() {

Теги: #curl #php #socket #socket #python #pycurl #libcurl #linux #C++ #benchmark #php
Вместе с данным постом часто просматривают: