
Вообще говоря, я всегда делал бэкенд исключительно на PHP. Я считаю его отличным языком для бэкенда, вернее не только для бэкенда, а отличным языком. Некоторые не любят PHP за малый порог вхождения. Типа через этот малый порог вхождения входит очень много непрограммистов, которые потом пишут говнокод. Но я придерживаюсь мнения, что PHP никак не виноват в этом. Скорее наоборот. На PHP логика просыпается даже у тех, кто кроме говнокода ничего написать не может. Поэтому, в любом случае, это отличный язык программирования, который каждый год хоронят, но никак похоронить не могут. И в 2026 году он живее всех живых и показывает отличные результаты.
Вторым в списке для сравнения я решил поставить Дарт. Дело в том, что самое узкое место применения Дарта — это как раз-таки применение на серверах. Потому что в мобильной разработке он уже как стандарт, веб, фронтенд и десктоп мало-мальцевски он тоже подтягивает. Но вот на серверах пока что его используют очень мало. Одна из причин на то, что его мало используют на серверах, — это отсутствие библиотек, таких как, например, есть у PHP. Но, сейчас в эпоху LLM, это совсем не значит, что Дарт негоден на серверах. Как покажет сравнение, он очень-таки годен.
Третий кандидат для сравнения — это C++. Это его фреймворк Drogon, который в каком-то там 2014 или 2015 годах взлетел как самый быстрый фреймворк для серверов на бэкенде по скорости. Если честно, я ни разу не писал бэкенд на C++, поэтому это была первая попытка. Просто хотелось посмотреть, как C++ уничтожит двух других оппонентов со своей 100x производительностью.
Что сравнивалось
Полный существующий PHP API через PHP-FPM с OPcache и явно документированными исправлениями в одноразовых исследовательских копиях.
Независимый Dart API, скомпилированный AOT.
Независимый Drogon C++ API, сборка Release. Dart и Drogon не вызывают PHP и не перенаправляют запросы в PHP.
В нативных реализациях объявлены 127 методов app.php и реализованы семь операций ai.php; отдельно проверены HTTP upload/download, нативные push-воркеры и доставка открытым клиентам.
WebSocket-инфраструктура общая: отдельный Dart gateway для каждого варианта, обращающийся именно к соответствующему API.
Все операции замеров проходят через HTTP → nginx → реальный API → авторизацию/права → SQLite → сериализацию ответа.
Я использовал в основном то, что реально попадается на практике: отправка сообщений, хеширование, авторизация, получение блокировки записи, запись, чтение, удаление, обновление в SQLite. Код в этой публикации выложить нет возможности, возможно обновлю статью позже, добавив исходники.
Условия и воспроизводимость
Сервер: Англия/Лондон, Ubuntu 24.04, 2 vCPU AMD EPYC 9354P, 8 ГБ RAM.
PHP 8.4.22; Dart 3.13.0 linux_x64; Drogon 1.8.7; JsonCPP 1.9.5; ICU 74.2; nginx 1.30.3.
Во всех трёх API через SQL-запросы проверены SQLite 3.51.3, WAL, synchronous=FULL, foreign_keys=ON, busy_timeout=5000, page_size=4096.
У каждого варианта независимая одинаковая синтетическая база: 1000 строк тестовой сущности, 100 исходных сообщений, одинаковые роли, пользователи, индексы и разрешения. Новая копия базы для каждого числа процессов и повторения.
Все рабочие процессы исполнялись от одного пользователя.
Использован одинаковый приватный nginx, HTTP/1.1 с повторным использованием соединений, без gzip и TLS в серверном тесте.Основной прогон: 1 и 2 процесса, 3 повторения, 200 последовательных запросов на операцию в каждом повторении. В таблицах ниже по 600 исходных наблюдений на ячейку.
Основная нагрузка: 100/300/600 запросов/с, по 8 секунд; стресс: 1000/1500/2000 запросов/с, по 5 секунд, 2 процесса, 2 повторения; дополнительная проверка: 8 процессов, 1000/2000 запросов/с, по 3 секунды, 2 повторения.
Смесь: 30% история, 20% роли, 10% список чатов, 20% пагинация, 20% отправка сообщения. Сохранение контента измерялось отдельно. У отправляемых сообщений отключены внешние уведомления, но сохраняются полноценная запись, события и сигнал Redis.
Генератор посылает запланированный поток с пределом 32 одновременных запросов. Время считается от запланированного момента поступления, включая очередь генератора. Ошибки и завершившиеся запросы учитываются отдельно.
Процентили объединены из сырых выборок; это не среднее значение процентилей разных запусков. Исходные файлы и SHA256 перечислены в JSON-сводках.
Ограничение стенда: генератор нагрузки, прокси и рабочий проект используют те же 2 vCPU. Например, при 600 запросах/с генератор тратил около 0,60 мс CPU на запрос. Его CPU и память измерены отдельно. Поэтому значения на перегрузке — наблюдаемая производительность всей этой конфигурации, а не универсальный предел языка или чистый максимум API на выделенном железе.
Тёплые запросы, один рабочий процесс
В каждой ячейке p50 / p95, мс. Меньше — лучше.
Операция |
PHP-FPM |
Dart AOT |
Drogon C++ |
|---|---|---|---|
Снимок ролей и разрешений |
2.17 / 2.95 |
1.01 / 2.02 |
0.96 / 1.45 |
История: 80 сообщений |
2.72 / 4.16 |
3.33 / 5.12 |
3.76 / 4.64 |
Список чатов |
2.13 / 2.91 |
0.93 / 1.87 |
0.91 / 1.42 |
Пагинация: 40 строк |
2.18 / 3.17 |
1.20 / 2.33 |
1.22 / 1.59 |
Сохранение сообщения |
4.99 / 7.66 |
2.14 / 4.36 |
1.85 / 3.25 |
Сохранение документа |
2.35 / 3.60 |
0.97 / 1.86 |
0.98 / 1.36 |
Для отправки сообщения Drogon уменьшил медиану относительно PHP примерно на 63%, Dart — на 57%. Для истории PHP опередил обе текущие нативные реализации. Это разница конкретного кода: наличие C++ само по себе не гарантирует более быстрый результат.
Смешанная нагрузка 600 запросов/с, два процесса
API |
Обработано, запросов/с |
p50, мс |
p95, мс |
p99, мс |
CPU API, мс/запрос |
Память PSS, МиБ |
|---|---|---|---|---|---|---|
PHP-FPM |
524.38 |
236.76 |
879.42 |
1207.94 |
1.97 |
30.91 |
Dart AOT |
599.79 |
3.42 |
31.76 |
167.65 |
1.14 |
31.08 |
Drogon C++ |
599.92 |
3.59 |
8.19 |
11.99 |
1.32 |
12.17 |
Dart и Drogon выдержали входящий поток 600 запросов/с в этом тесте; PHP с двумя процессами не успевал. Ноль ошибок у PHP здесь означает, что очередь в конце дождалась обработки, а не что задержка была приемлемой. При одном процессе PHP обработал около 377 запросов/с на таком же входящем потоке; p95 достигал 4,58 секунды.
PSS — сумма пропорционально разделённой памяти процессов API, включая мастер PHP-FPM. Она не считает общие страницы целиком по нескольку раз, как сумма RSS. Это наблюдение после серии, не непрерывно измеренный пик. Общий nginx, генератор, Redis, WebSocket gateway и push-воркеры в этой колонке не смешаны с памятью API.
Перегрузка, два процесса:
Входящий поток |
API |
Обработано, запросов/с |
p50, мс |
p95, мс |
PSS, МиБ |
|---|---|---|---|---|---|
1000 |
PHP-FPM |
560.94 |
1 971.21 |
3 853.38 |
31.37 |
1000 |
Dart AOT |
996.98 |
10.86 |
107.44 |
33.50 |
1000 |
Drogon C++ |
973.27 |
54.82 |
128.49 |
12.64 |
1500 |
PHP-FPM |
531.80 |
4 715.65 |
8 617.77 |
31.36 |
1500 |
Dart AOT |
1 051.33 |
1 090.88 |
2 045.36 |
34.59 |
1500 |
Drogon C++ |
922.35 |
1 534.06 |
2 934.37 |
12.70 |
2000 |
PHP-FPM |
509.15 |
6 633.42 |
13 945.13 |
31.37 |
2000 |
Dart AOT |
1 096.23 |
2 052.18 |
3 951.29 |
36.22 |
2000 |
Drogon C++ |
919.18 |
2 812.01 |
5 562.40 |
12.73 |
При 2000 входящих запросах/с все варианты перегружены. Dart обработал примерно в 2,15 раза больше запросов, чем PHP с теми же двумя процессами; Drogon — примерно в 1,81 раза больше. Это не режим, который стоит принимать за нормальную эксплуатацию: задержки уже измеряются секундами, в реальных проектах при таком - нужно думать над оптимизацией или апгрейдить железо.
Проверка пула из восьми процессов
API |
Обработано при входящих 1000/с |
Обработано при входящих 2000/с |
PSS при 2000/с, МиБ |
|---|---|---|---|
PHP-FPM |
721.33 |
709.72 |
46.77 |
Dart AOT |
931.36 |
927.14 |
117.60 |
Drogon C++ |
950.59 |
798.98 |
34.08 |
Больше процессов помогло PHP: на перегрузке получено около 710–721 запросов/с вместо 509–561 при двух процессах. Поэтому было бы неправильно называть 509 запросов/с пределом PHP. Dart и Drogon от восьми процессов на этих двух vCPU не выиграли; память выросла. Среди проверенных конфигураций лучше выглядит небольшой пул нативных процессов и более широкий PHP-FPM-пул. Для назначения production SLO нужны более длительные прогоны с внешним генератором и реальным распределением данных.
Разбор времени отправки сообщения
Медианы внутренних таймеров при одном процессе, мс:
Этап |
PHP-FPM |
Dart AOT |
Drogon C++ |
|---|---|---|---|
Авторизация |
0.23 |
0.09 |
0.10 |
Получение блокировки записи |
0.01 |
0.01 |
0.01 |
SQL-записи |
0.24 |
0.10 |
0.11 |
Коммит |
1.54 |
0.92 |
0.86 |
Сериализация ответа |
0.00 |
0.00 |
0.01 |
Внутренний total |
3.30 |
1.33 |
1.20 |
Таймеры вложены друг в друга, и их медианы нельзя складывать для получения общей медианы. Внешнее время HTTP включает также прокси, планирование процессов и передачу ответа. В PHP отправка уведомления Redis измерялась отдельно: медиана около 0,25 мс. В нативных API публикация асинхронная.
Коммит остаётся заметной частью отправки: около 0,86–1,54 мс в этих сериях. Переписывание языка не убирает ожидание надёжной записи SQLite. На чтении истории у Dart/Drogon дороже текущая обработка и сериализация: внутренний dispatch примерно 1,46/2,00 мс против 0,64 у PHP; encode примерно 0,42/0,37 против 0,04 мс. Именно этот путь заслуживает следующего профилирования нативных реализаций.
Также я отдельно тестил быстродействие модуля чата, хотелось проследить за каждым промежутком времени в процессах от нажатия кнопки отправки сообщения до получения в интерфейсе галочки "отправлено". Об этом ниже.
От нажатия «отправить» до кадра с галочкой
По 30 измеренных сообщений на вариант после трёх прогревочных; отправка через настоящий WSS, интервал между сценариями 400 мс после подтверждения. Все 90 сообщений подтверждены; ошибок Flutter в журнале нет. Время отсчитывается внутри обработчика, поэтому запуск CLI и доставка команды автоматизации не включены.
Backend |
До кадра с галочкой p50, мс |
p95, мс |
Диапазон, мс |
WSS внутри клиента p50, мс |
|---|---|---|---|---|
PHP-FPM |
117.50 |
126.22 |
109.10–126.93 |
105.71 |
Dart AOT |
120.70 |
136.97 |
108.17–138.27 |
103.93 |
Drogon C++ |
117.20 |
123.44 |
109.22–125.66 |
103.05 |
В этом коротком живом сценарии переход с PHP на Dart/Drogon не дал заметного ускорения галочки. Небольшие различия медиан сравнимы с сетевыми колебаниями и ожиданием следующего кадра. У Dart медиана кадра выше PHP, хотя медиана клиентского WSS ниже.
Тёплые внешние HTTPS запросы
Финальный сетевой прогон: 40 измерений на каждую из шести операций для каждого API; всего 720 запросов. По два прогревочных запроса исключены. Значения p50 / p95, мс:
Операция |
PHP-FPM |
Dart AOT |
Drogon C++ |
|---|---|---|---|
Роли |
102.97 / 105.42 |
101.66 / 103.81 |
101.89 / 102.73 |
История 80 сообщений |
103.72 / 117.38 |
105.81 / 111.16 |
103.93 / 105.12 |
Список чатов |
102.83 / 103.97 |
101.82 / 103.61 |
101.78 / 103.31 |
Пагинация 40 строк |
102.97 / 104.78 |
101.66 / 103.34 |
102.90 / 106.42 |
Отправка сообщения |
104.47 / 105.36 |
102.60 / 104.57 |
103.10 / 104.40 |
Сохранение контента |
102.54 / 103.08 |
101.70 / 102.72 |
101.81 / 103.00 |
Подтверждение и доставка второму открытому клиенту по WebSocket
Отдельно 60 сообщений на вариант после двух прогревочных; ACK — подтверждение отправителю; доставка — получение соответствующего сообщения вторым сокетом. Это транспортные измерения, без Flutter. Ошибок и таймаутов в завершённом прогоне нет.
Backend |
ACK p50, мс |
ACK p95, мс |
Доставка p50, мс |
Доставка p95, мс |
Доставка p99, мс |
|---|---|---|---|---|---|
PHP-FPM |
103.75 |
105.96 |
105.19 |
106.86 |
112.38 |
Dart AOT |
108.74 |
111.58 |
109.24 |
111.68 |
120.81 |
Drogon C++ |
102.47 |
103.84 |
103.07 |
104.17 |
105.77 |
Установка TCP-соединения: медиана 99.60 мс, 12 проб. TCP вместе с TLS: 203.18 мс, 6 проб. Это два разных измерения; второе включает первое. Все тёплые результаты выше используют уже установленные соединения. TCP connect показывает масштаб сетевой составляющей около 100 мс, т е по сути большая часть времени уходила на сетевой транспорт, а не на обработку на бэкенде, поэтому особого толку от замены PHP на более высокопроизводительные языки на малых нагрузках - просто нет. Тут вспомнились Дуровы, Цукерберги, киткаты и HPHPHPHP.
Вывод
Для простой настройки сервера и простого поиска специалиста, который сможет быстро настроить бэкенд, при этом довольно близкого уровня производительности - в лидерах, конечно, PHP. Для высокой пропускной способности текущей смешанной нагрузки предпочтительнее Dart AOT. Dart оказался тем самым серединным путем по скорости близок к Drogon, по потреблению памяти к PHP, поэтому свой выбор остановлю на нем. Для минимальной памяти и максимальных нагрузкок — Drogon C++. Выбор между заменой стека и покупкой железа лежит на пользователе, но при текущих ценах на память, C++ может реально сэкономить бюджет.
При сохранении PHP существенное улучшение под этой нагрузкой уже даёт правильно выбранный пул PHP-FPM, хотя в проверенных конфигурациях он уступает нативным вариантам по смешанной пропускной способности. Переводить всё на C++ только из предположения «C++ всегда быстрее» эти данные не поддерживают. 100x я не получил и 10x тоже (возможно, я не знаю каких-то секретов оптимизации C++ и попрошу тех, кто знает - написать подобную статью, с удовольствием прочту), это еще раз показывает, что современные языки программирования в большинстве случаев не настолько тормознутые и выбор C++ только ради увеличения производительности - далеко не всегда себя оправдывает.
Комментарии (50)

andreymal
17.09.2026 12:59В 2026 году без Rust несерьёзно https://www.techempower.com/benchmarks/#section=data-r23&test=query

Doaxan
17.09.2026 12:59В 2026 году ссылаться на бенчмарки 2025-го как-то несерьезно =)
https://www.http-arena.com/

ToxaBes
17.09.2026 12:59Эм, логичнее было бы сравнивать PHP с нодой, гошкой и растом, причем свежий PHP-FPM версии 8.5+ и фреймворком грамотно реализующим PSR стандарты, например Slim 4+.

csharpminor0
17.09.2026 12:59логичнее было бы сравнивать PHP с нодой, гошкой и растом
этих сравнений валом, а сравнение в статье - редкость, в чем и ценность.
8.5 не сильно от 8.4 по производительности отличается и сейчас в основном 8.4 распространена везде, а PSR на производительность не влияет, т е ваши возмущения по сути высосаны из пальца, а статья хорошая

ToxaBes
17.09.2026 12:59в основном 8.4 распространена везде
А у меня в основном везде распространен 8.5.4.
8.5 не сильно от 8.4 по производительности отличается
Ну если до 15% на CPU-heavy это для вас не сильно, то конечно, да.
ваши возмущения по сути высосаны из пальца, а статья хорошая
Те конкурентов будем брать свежие версии, а PHP не обязательно. У конкурентов будем сравнивать конкретные вылизанные фреймворки/движки, а PHP не обязательно.
А то вдруг достойно себя покажет, я вас правильно понял?

lil_master Автор
17.09.2026 12:59Ну если до 15% на CPU-heavy это для вас не сильно, то конечно, да.
до 15 процентов это сколько? 0 тоже находится до 15. 15 процентов в одном кейсе не означает производительность во всех кейсах. Вот по факту сравнение:
https://tideways.com/profiler/blog/php-benchmarks-8-5-vs-8-4-8-3-and-7-4
А у меня в основном везде распространен 8.5.4.
Вы реально думаете что кому-то интересно что там у вас?
А то вдруг достойно себя покажет
В статье как раз это и указано, PHP достойно себя показал. Dart и Drogon очень сложно назвать конкурентами PHP. Статья является исследованием из соображений личного интереса, а не маркетингом. Иногда надо вылезать из своих фантазий.

ToxaBes
17.09.2026 12:59до 15 процентов это сколько?
от 5 до 15 в разных тестов из того что я видел.
Вы реально думаете что кому-то интересно что там у вас?
Хамство в аргументации тоже не поможет, и отучайтесь говорить за всех.
В статье как раз это и указано, PHP достойно себя показал.
А я писал про сравнение с нодой, гошкой и растом. Вы еще и написанное с трудом воспринимаете.
Те от 5 до 15% для вас не достаточный аргумент, потому что у "всех" в вашем понимании стоит не последняя версия и поэтому как я посмел вообще что-то писать.
Я что, воинствующего адепта стриггерил?

lil_master Автор
17.09.2026 12:59Те от 5 до 15% для вас не достаточный аргумент
Факты будут или только слова? Выше по ссылке есть факт реальной производительности. Аргументы и факты газету помните?) так вот да, без фактов аргумент не достаточный. У меня на сервере стоят обе версии и в среднем работают примерно с одинаковой производительностью, 15 процентов оверхеда там не видно.
Вот факты:
https://kinsta.com/blog/php-benchmarks
https://tideways.com/profiler/blog/php-benchmarks-8-5-vs-8-4-8-3-and-7-4
И я наблюдаю примерно такой же прирост в среднем.Есть ещё WooCommerce: +33,07% и CodeIgniter: +54,37%, но там на PHP 8.5 существенно уменьшился размер возвращаемой страницы. Поэтому эти цифры нельзя приписывать чистому ускорению PHP. Grav - отдельный результат конкретного теста, переносить его на другие приложения нельзя.
Жду ваши факты.
отучайтесь говорить за всех.
это к предыдущему оратору
А я писал про сравнение с нодой, гошкой и растом.
Статья не про них. Определитесь с тем, кого вы считаете конкурентами PHP. Это не я с трудом воспринимаю, это вы в своем уме почему-то решили сравнивать PHP с нодой, гошкой и растом.
Я что, воинствующего адепта стриггерил?
Думаю, нет)

ToxaBes
17.09.2026 12:59Факты будут или только слова?
Первая ссылка в гугле, найдите там поиском абзац:
For PHP 8.4 users, this data suggests that upgrading directly to 8.5 (skipping 8.4) is the optimal path. If you are already on 8.4, the 14.4% improvement from upgrading to 8.5 is a compelling reason to make the jump.
Определитесь с тем, кого вы считаете конкурентами PHP.
Из того, что я вижу на бекендах: нода, го, раст. Не dart и не C++.
Думаю, нет)
Это обнадеживает.

lil_master Автор
17.09.2026 12:59Первая ссылка в гугле
Статья показывает возможный прирост +14,4% в конкретном тесте, т е в одном кейсе, как я писал выше, но не доказывает такое ускорение PHP в среднем для Laravel/Symfony/WordPress, инфа с 0% improvement в другом кейсе в этой статье тоже есть.

ToxaBes
17.09.2026 12:59Ну если пруфы не пруфы, то тут медицина бессильна.

lil_master Автор
17.09.2026 12:59Контекст, выдернутый из общего - это не пруфы, а медицина тут не причем

ToxaBes
17.09.2026 12:59Я вам прямо абзац выводов из phpbenchmark привел. Если это для вас вырвано из контекста, то я не вижу как можно продолжать диалог.

lil_master Автор
17.09.2026 12:59Один абзац из бенчмарков ничего не означает, прогоните тесты, будут видны реальные цифры + там по ссылке тест синтетический (SELECT 1 as ok), это не реальное поведение приложения с кучей бизнес логики и разнообразными сложными запросами. Это нельзя брать за эталон реальной производительности. Это далеко от реальности, Карл.

ToxaBes
17.09.2026 12:59Один абзац из бенчмарков ничего не означает
Раздел выводов из статьи PHP Performance Engineer о свежем тестировании на PHPBenchLab ничего не означает. Я вас услышал. Правда, фиг знает как это комментировать, вы меня прям обезоружили.

lil_master Автор
17.09.2026 12:59я могу вам этот же синтетический тест прогнать на других языках программирования, как минимум на Дарте и на C++, но он не будет отражать реальное поведение приложений и различие в производительности этих языков

Arenoros
17.09.2026 12:59возможно, я не знаю каких-то секретов оптимизации C++ и попрошу тех, кто знает - написать подобную статью
1. чего их писать их и так тысячи, хоть в формате видео https://www.youtube.com/watch?v=2KON1UPZEIc хоть в книгах "C++ High Performance"
2. о какой оптимизации может идти речь без профилирования?
мощь C++ в практически безгранмичной возможности оптимизировать узкие места, там где у дригих языков способы оптимизации заканчиваются в С++ они только начинаются

TimurZhoraev
17.09.2026 12:59Сейчас скорее проблема не бэкэнда как такового а спецификаций, которые не отражают текущие потребности. С одной стороны давлеющее легаси из 90-х с другой микросервисы, распределённые архитектуры, асинхронность и кроссплатформ. Поэтому тут язык уже не важен, главное чтобы он (вместе с фреймворком) мог обернуть необходимые протоколы без лишней рутины, ну и конечно же если есть для этого скиллы, MCP или даже файн-тюн модели то это несомненно перевесит любые недостатки языка.

flowerlilian0
17.09.2026 12:59Вы всё в одну кучу слили и перемешали, при чем тут файн-тюн вообще?

TimurZhoraev
17.09.2026 12:59Модели ad hoc, применимо к синтезу необходимого функционала с минимальным количеством "глюков" и расходом токенов при поиске необходимых данных - собственно это и есть специализированные модели с файн-тюном. Вообще говоря это довольно обширная задача - синхронизация документации и того как это реализовано с точки зрения дальнейшего использования хоть LLM хоть питон-генератором. Обычно делается векторная БД с соответствующими туда запросами агентами, далее по чанкам можно уже дать если необходимо исходный документ. До сих пор это делалось человеком для человека но не для машины так скажем. Все упомянутые в публикации инструменты имеют уже историю лет 20-30 и отвечают задачам на тот момент когда они только появились. Новейшие же инструменты требуют совершенно других подходов, здесь уже язык уходит на второй план, на первом месте это генерация кода под задачу, мета-языки спецификаций, обёртка тестами, автоматизация проверки граничных значений.

bogolt
17.09.2026 12:59Я использовал в основном то, что реально попадается на практике: отправка сообщений, хеширование, авторизация, получение блокировки записи, запись, чтение, удаление, обновление в SQLite. Код в этой публикации выложить нет возможности, возможно обновлю статью позже, добавив исходники.
Хотелось бы посмотреть, потому что пока выглядит неубедительно. Если у вас просто голая обработка хттп и походы в базу то что вы собственно тестируете ?
В реальном проекте будет описана куча логики, вот там и будет видно как он себя ведет, где тормозит и где ест память... а так, сам sqlite вполне возможно везде одна и та же сишная библиотека, вызовы который дергаются из разных ЯП. Остается только скорость создания потоков, да минимальный оверхед на обработку запроса и отправку ответа.

lil_master Автор
17.09.2026 12:59Если у вас просто голая обработка хттп и походы в базу
мне бы такое даже в голову не пришло написать.

bogolt
17.09.2026 12:59Но вы же тестировали свой проект переписанным на разных языках. Сколько же там логики что вы пошли на такой шаг ?

lil_master Автор
17.09.2026 12:59Проект огромный, я не переписывал весь бэкенд, а попробовал переписать части, которые отвечают за авторизацию, систему ролей, расширенные операции в интерфейсе над сущностями и чат (он кстати на wss) между сотрудниками, это примерно 4 из 40 по объему кода, чтобы проверить, даст ли по факту значимое ускорение переписывание бэкенда на Дарт или C++. Проект на фронте полностью на Flutter, поэтому в качестве вариантов для сервера был выбран Дарт, а Drogon был выбран из-за своей нашумевшей производительности. Исходники показать не могу из-за политик, но ваше предположение об элементарных запросах к базе в данном случае не верно.

bogolt
17.09.2026 12:59Ну то что вы описали и выглядит как "получим запрос, дернем базу и выдадим ответ". По крайней мере от авторизации и системы ролей я бы ничего большего не ожидал.
Возможно для тех задач для которых вы пока переписали проект он и правда почти ничего такого не требует, в общем мне удивительно слышать что большой сложный проект может работать со сравнимой скоростью учитывая настолько разные технологии.

lil_master Автор
17.09.2026 12:59По крайней мере от авторизации и системы ролей я бы ничего большего не ожидал.
ABAC системы ролей - это далеко не просто дернуть инфу из одной таблицы, там очень много динамически меняющихся факторов.
Под небольшой нагрузкой разница не сильно ощутима - это да. C++ под высокой нагрузкой дал очень хорошие результаты и в среднем по памяти выигрыш в 3 раза, в выводе я об этом написал. Время транспорта в сети так же необходимо учитывать, т к это не локальное тестирование. Но неоднозначное удивление не только у вас.
Я продолжаю тестировать на потери и другие кейсы, буду обновлять статью.

AlexLeonov
17.09.2026 12:59Я бы на вашем месте попробовал бы как минимум еще один рантайм для PHP, кроме FPM. Например FrankenPHP.

ToxaBes
17.09.2026 12:59Я бы на вашем месте
Из комментариев выше видно, что автор очень болезненно реагирует на подобные предложения. Хотя предложение здравое.

InsiderCrush
17.09.2026 12:59О! Снова Вы. А я смотрю вы тот еще склочник и любитель поделать замечаний другим. Вам бы сейчас поискать информацию о пике Даннинга-Крюгера. Возможно взгляните на себя совсем иначе :D Я серьезно! Загуглите :D

ToxaBes
17.09.2026 12:59О! Снова Вы.
Вы уже оправились от предыдущей атаки на меня? Я настолько запал вам в душу, что теперь бегаете за мной по всему порталу? Это приятно, хотя я и не ожидал поклонников.
А я смотрю вы тот еще склочник и любитель поделать замечаний другим.
Я комментирую только то, в чем разбираюсь, я ж не виноват что у меня 6 лет в ML, 10 лет в комплексной автоматизации и почти 20 лет в PHP (eCommerce)?
Поэтому для меня дико когда при сравнении берут php не последней версии, сравнивают его не с тем с чем он конкурируют, да еще показывают wooCommerсe и Codeigniter, который был актуален 10 лет назад, еще бы Magento взяли. Вам это ничего не скажет, вы обычный тролль, который, цитирую из прошлой переписки: "Да я вообще не в теме". При этом мнение свое имеете и пытаесь мне рассказать про эффект Даннинга-Крюгера. Это забавно.
Посмотрите мои комментарии, там либо претензии к ИИ-слопу, либо обсуждение ML сферы, либо благодарность за качественные статьи по этим же темам.
Конкретно к этой статье претензия что фиг с ним, что нерелейтед конкуренты сравниваются, так еще и php неактуальной версии. А потом имеем общественное мнение что php плохой и медленный.
Вы скорее всего вообще не понимаете о чем я написал выше, да оно и не для вас написано. Я написал это для остальных читателей чтобы понимали, что происходит.
Для вас же я напишу следующее: если я вас раздражаю, то прошу прощения - это повторится.

InsiderCrush
17.09.2026 12:59Что, настолько заметно, что я вами одержим и бегаю, ищу, якобы случайной встречи? Ох, вы меня поймали! Да! Вы мне интересны. Вы умны, образованны и компетентны. Вы человек-магнит :D А теперь по делу - вы тот тип людей, которые дают замечания другим не потому что хотят изменить картину мира или что то исправить. У вас острое желание самоутвердится. Автор глуп, а я умён. Это ваш двигатель. Ваш мотив. Я всего лишь говорю что это очевидно все другим. Вы технически подкованы, но с социалкой и взаимодействием у вас проблема. Инта + 10, навыки + 6, харизма 0. Вы обижаете людей даже не понимая этого :D

ToxaBes
17.09.2026 12:59А теперь по делу - вы тот тип людей, которые дают замечания другим не потому что хотят изменить картину мира или что то исправить.
Ну почему же, я не хочу видеть ИИ-слоп и кривые тесты, я об этом пишу в комментариях, вместо того чтобы молча минусовать статьи и авторов. Считаю что так честнее. Можете продолжать минусовать мои комментарии и в карму наведываться, я над ними не трясусь.
У вас острое желание самоутвердится. Автор глуп, а я умён.
Тут тоже мимо. Я давно прошел этот этап. Если бы я был на этом этапе, вряд ли я бы благодарил авторов за хорошие статьи, согласитесь, как-то не клеится. Тут либо самутверждаться, либо благодарить других.
Это ваш двигатель. Ваш мотив
В этой роли у меня жена.
Я всего лишь говорю что это очевидно все другим.
Вы вообще много говорите, отучайтесь говорить за всех. Если бы это было так, мне бы давно слили карму и я перестал бы иметь возможность комментировать.
Вы технически подкованы, но с социалкой и взаимодействием у вас проблема
Божечки, да я гик, пойду жене сказу, а, она в курсе.
Инта + 10, навыки + 6, харизма 0
Инсты нет (как и ТГ), навыки достаточные чтобы 6й год работать на себя в качестве ИП и в РФ и за рубежом, на харизму тоже не жалуюсь.
Вы обижаете людей даже не понимая этого :D
Я эмпат, поэтому прекрасно понимаю, что редко кто может нормально воспринять конструктивную критику, но молчать это путь вникуда.
Поэтому: не токсичные отношения, а крепкий брак (с) уж не помню кто.
Вы так и не поняли, почему никак не можете меня зацепить: я 20 лет женат, я просто не чувствую боли :).

InsiderCrush
17.09.2026 12:59Тут тоже мимо. Я давно прошел этот этап.
Ой, сомневаюсь :D Вы вчера буквально накинулись на 16-и летнего паренька за то что он "осмелился" написать на тему, в который вы разбираетесь. Вы пренебрегли всеми правилами приличия, к месту и не к месту кидали ссылку на свою статью, и упорствовали в том, что вы - истина в последней инстации. Вы хапали минусы, но упорствовали дальше, вы хапали еще больше минусов, но даже не собирались останавливаться :D Нет, вы совсем не прошли этот этап. Вы в нем обитаете постоянно :D И не инста, а инта - интеллект в смысле. Вы не гик добродушный, вы сухарь и задавака, в сознании сразу возникает брюзжащий профессор, который умен, но все его избегают. Даже жена ;)

ToxaBes
17.09.2026 12:59Вы вчера буквально накинулись на 16-и летнего паренька за то что он "осмелился" написать на тему, в который вы разбираетесь.
Я не лезу смотреть кому сколько лет и ко всем авторам отношусь одинаково, как ко взрослым технически грамотным специалистам. Вы не принимаете подход: обьяснить человеку в чем ошибка чтобы в следующий раз он сделал лучше. Мне этот подход нравится больше чем молча минусить слабый материал.
Вы пренебрегли всеми правилами приличия, к месту и не к месту кидали ссылку на свою статью
Часть статей написаны в том числе и для того чтобы кидать ссылки на них, вместо того чтобы десятый раз детально обьяснять в комментарии одно и тоже.
Вы хапали минусы, но упорствовали дальше, вы хапали еще больше минусов, но даже не собирались останавливаться
С каких пор минусы сильнее логики? Я же писал что не трясусь над ними.
Нет, вы совсем не прошли этот этап
Тогда я бы трясся над минусами и лелеял карму. Вы опять себе противоречите.
И не инста, а инта - интеллект в смысле
Я ваш зумерский сленг не знаю (или какой это?). В перый раз слышу такое сокращение.
Вы не гик добродушный, вы сухарь и задавака, в сознании сразу возникает брюзжащий профессор, который умен, но все его избегают.
Никогда не претендовал на добродушность. Я следую своим настройкам справедливости.
Даже жена ;)
Жену постоянно поправлять себе дороже ;)

Dead_Bit
17.09.2026 12:59У вас острое желание самоутвердится. Автор глуп, а я умён. Это ваш двигатель. Ваш мотив.
вы так говорите, как будто это что-то плохое. жизненный пример (куда ж без него): мне в школе нравилось ошарашивать учителя и класс тем, что учитель писал на доске длинное уравнение, проходило 10-45 секунд, я поднимал руку, выходил и писал ответ (без промежуточных шагов). забери у меня этот азарт выпендриться, я б может был не так хорош в математике. люди постоянно самоутверждаются. это нормально.

InsiderCrush
17.09.2026 12:59Так я ж не говорю что самоутверждаться это плохо! Это главный внутренний двигатель :D Я говорю - плохо это делать на контрастах и за счет других.

ToxaBes
17.09.2026 12:59Я просто хотел читать качественные технические статьи...

InsiderCrush
17.09.2026 12:59...в качестве главного арбитра, судьи и золотого эталона знаний :D

ToxaBes
17.09.2026 12:59в качестве благодарного читателя.
Интересно, с какого раза до вас дойдет что я отличаюсь только тем что вместо того чтобы молча ставить минус я пишу, что по-моему мнению не так (не ставя минус ни в статью, ни в карму) . Я считаю что такая обратная связь лучше чем минус. Если статья интересная (для меня) я пишу коммент с благодарностью, ставлю автору плюс в статью и в карму.
Я не истина в последней инстанции, иногда ошибаюсь, но спорить со мной сложно, тк нужно либо сильно дружить с логикой либо иметь сопоставимый опыт. Всегда рад нормальным аргументам, а не отрицанию как в ветке выше с тестами.

InsiderCrush
17.09.2026 12:59Вы все еще пытаетесь цепляться за содержание, оправдывая свое поведение им. А я вам говорю о форме. Вы в каждом комменте всех пытаетесь уложить в свое прокрустово ложе. Станьте созидателем. Не критикуйте, а подсказывайте. Не утверждайте, а делитесь мнением. Хабр от такого подхода выиграет. Автор выиграет. Вы выиграете :)

ToxaBes
17.09.2026 12:59Вы все еще пытаетесь цепляться за содержание
Я читаю текст и отвечаю на него и не собираюсь лазить к каждому автору в профиль и смотреть не 16 ли ему лет.
А я вам говорю о форме. Вы в каждом комменте всех пытаетесь уложить в свое прокрустово ложе
Комментарий не передает интонацию поэтому нейтральный часто воспринимается как негативый, это такое когнитивное искажение. Второе искажение в том, что более профессиональный комментарий (поправляющий либо предлагающий факты идущие в ращрез со статьей) также чаще вызывает негатив вне зависимости от того как написан. Были такие иссследования у психологов.
Поэтому то что вы предлагаете не сработает. Ну не любят человеки когда их поправляют.
Вы выиграете :)
Я уже выиграл, у меня есть на Хабре поклонник :)
Предлагаю вам отдохнуть немного от меня, чтобы завтра, с новыми силами снова в бой.
Спокойной ночи и постарайтесь, чтобы я вам не приснился, а то были уже преценденты ;)

InsiderCrush
17.09.2026 12:59Я уже выиграл, у меня есть на Хабре поклонник :)
сомнительная конечно победа, но 1 поклонник лучше чем 0 :)

Dead_Bit
17.09.2026 12:59интересует конкретика по C++: какой компилятор, версия, стандарт, какие флаги, не говоря уже про сам код (хотя бы небольшие блоки). автор признался, что не писал бекенд на плюсах, значит скорее всего не способен в оптимизацию на этом ЯП. компилятор плюсов (gcc/clang) при правильных подсказках в коде и флагах оптимизации творит настоящую черную магию по части быстродействия. да-да, я из тех людей, у которых встает при упоминании C++.

AndrewStephanoff
17.09.2026 12:59Странно видеть PHP на устаревшем PHP-FPM, а не, например, Swoole. Ну и добавьте Golang + Rust, так будет интереснее

HiItsYuri
17.09.2026 12:59Userver для плюсов и фреймворки для python вообще не рассматриваются?
Userver согласен, сложноват, но ллм справится с созданием болванки.
vkomp
Я возмущён! Как можно сравнивать бэкенд в отсутствие Go?! ;)
lil_master Автор
Go и ноду попробую в следующий раз)
Zazza
фига вы их в одно предложение засунули) Rust-а не хватает)