Вместе с Клодом провели небольшой эксперимент
Написали три маленьких сервиса на языках программирования Go, Rust и JavaScript (Node.js). Каждый из сервисов выполнял простую задачу: подключался по веб-сокетам к моему аккаунту на криптовалютной бирже. Я на бирже создавал и отменял ордера, короче говоря, покупал и продавал криптовалюту, чтобы замерить, за какое время данные по веб-сокетам с биржи дойдут до моего компьютера.
Также добавил сюда еще четвертого кандидата на PHP — это мой существующий проект на Laravel, где у меня также работают веб-сокеты, написанные на PHP. Результат вы видите в таблице: на первом месте язык Go, который быстрее всех обрабатывал и выводил в консоль сообщения; на втором месте язык Rust, но с очень маленьким отрывом, хотя я думал, что он будет на первом месте; на третьем месте язык JavaScript через Node.js; и на четвертом месте PHP.
Ожидаемо, что PHP будет на четвертом месте, но надо отдать должное, что отрыв не такой уж криминальный, особенно с учетом того, что это команда php artisan websockets, которая под капотом загружает все мое приложение на Laravel, помимо прочего, включает в себя намного больше различных проверок.
Также используется большой пакет для веб-сокетов, со своим event loop. Все это работает на одном ядре.
Короче говоря, сервисы на Go, Rust и JS очень маленькие, а реализация на PHP намного более "жирная", потому что это мой реальный проект.
И даже при этих условиях она показала отличный результат. И да, под нагрузкой результаты могут измениться, но всё равно интересный эксперимент.
@onecode_blog