В этой статье я собираюсь сравнить собственный HTTP-сервер Go с Hyper HTTP-сервером Rust. Основываясь на своих исследованиях, я обнаружил, что Hyper - самый популярный сервер на стороне Rust. Если есть лучшие и популярные альтернативы, пожалуйста, дайте мне знать.
Сравнение будет справедливым, поскольку оба являются компилированными языками, которые создают машинный код. Давайте проведем тесты и проверим результаты.
Тестовая настройка
Тесты выполняются на MacBook Pro M1 с 16 ГБ оперативной памяти.
Версии программного обеспечения следующие:
- Go v1.20.2
- Rust v1.68.2
Код HTTP-сервера hello world в обоих случаях выглядит следующим образом:
Go
Rust
Cargo.toml
Код Rust был собран в режиме релиза:
Тестирование
Каждый тест выполняется для 5 миллионов запросов
Тесты выполняются для 10, 100 и 300 одновременных подключений.
Нагрузочный тест выполняется с помощью инструмента HTTP-тестирования Bombardier.
Ниже приведены таблицы, показывающие результаты для каждого уровня параллелизма:
По сравнению со сравнениями с Bun и Deno, на этот раз конкуренция была справедливой, потому что и Go, и Rust являются компилируемыми языками. Они создают машинный код, который выполняется напрямую. Однако с точки зрения производительности Rust превосходит его по всем аспектам.
ПОБЕДИТЕЛЬ: Rust Hyper
Статья на list-site.