Начинаем новый год с видео сравнения скоростей разных бэкенд-стеков для веба. Это не первый видос из серии, но именно он запомнился из-за шутки Антона Кулинского:

"... Кстати! Если весь стек Python'а написан на Rust'е, то это так называемый, PythoRust-стек? Подумайте об этом ..." 😂

Ну а смысловая нагрузка здесь тоже есть. Показывается сравнение не классического стека для 👩‍💻 Python - LiteStar и Granian с классическим 👩‍💻 Go и слегка прокачанным 👩‍💻 Rust (заменили стандартный аллокатор на jemalloc).

Ну и сравнение (на localhost 👩‍💻):

  • Python: 140.000 rps / самый долгий запрос: 50ms
  • Go: 178.000 rps / самый долгий запрос: 2.5ms
  • Rust: 192.000 rps / самый долгий запрос: 1.2ms

Интересно, что чистый Go обогнал чистый Rust, но не на много. Добавив аллокатор jemalloc в Rust, результаты снова склонились в сторону Rust.

Для статических ручек, возвращающих строку "Hello World", результаты Python и Rust (чистого, без jemalloc) оказались достаточно близки для того, чтобы слегка переписать уже существующий проект, использующий Flask, FastApi или еще что-нибудь именно на LiteStar и Granian, если производительность действительно важна.

Такие замеры не очень интересны, так как ручка, которую дергал wrk - статическая. В проде же часто встречаются динамические ручки (те, что содержат переменные в пути, например, /users/{id}) и парсинг параметров.

В конце производится более интересное сравнение - в игру вступает PostgreSQL. Теперь запросы дергают статическую ручку, которая селектит в БД данные по заказам.

И теперь результаты такие:

  • Python: 11.500 rps / самый долгий запрос: 82ms
  • Go: 30.500 rps / самый долгий запрос: 98ms
  • Rust: 46.500 rps / самый долгий запрос: 81ms

Теперь в тесте поучаствовали еще драйвер БД и сама БД. Тем не менее - очередность по производительности не поменялась. Задержки пришли плюс-минус к одим значениям, а вот по RPS Python сдал, причем сильно.

Сам Антон Кулинский снимает крутые и забавные видосы на тему разработки. Есть пара крутых видосов про Git: База по Git с сравнением merge с rebase и реакция на видео ExtremeCode, где тот признался, что не умеет в Git. И еще пара видосов на тему Computer Science про кэш процессора и выравнивание памяти.

Не каждый поймет юмор Антона, но рассказывает он действительно полезные вещи. Если что, вот его канал.


В этом посте были ссылки, но мы их удалили по правилам Сетки