Квест → Как хакнуть форму
Прошли: 77
Рост популярности AMQP interop вызвал волну вопросов относительно того, какой адаптер является самым быстрым. В этом посте я хочу поделиться своими выводами о производительности постановки сообщений в очередь. Позже будет подобный пост о "разгребании" очереди.
Рассмотрим:
а также их адаптеры с имплементацией AMQP interop
:
и один из мира Golang:
Мы собираемся сравнить производительность библиотек, а также затраты на их обёртку с имплементацией AMQP interop
. Было бы также интересно сравнить реализации на PHP с чем-то из другого мира, чтобы почувствовать разницу. Я выбрал библиотеку на Go streadway/amqp
, которая, кажется, широко используется.
Небольшое примечание по методологии. Я запускал бенчмарки на дроплете DigitalOcean ИКТ (1Gb RAM, 1 CPU, Ubuntu 16.04 x64) внутри docker-контейнеров. Каждый запуск был сделан в новых контейнерах. Исходный код можно найти здесь.
Картинка стоит тысячи слов, поэтому вот немного статистики:
Вы можете запустить тесты самостоятельно. Для этого вам нужно скачать enqueue-dev репозиторий, установить зависимости и запустить скрипт замера. Как то так:
git clone https://github.com/php-enqueue/enqueue-dev.git composer install BODY_SIZE=10000 ./bin/bench bench/AmqpExtBench.php --report=aggregate