• Home
  • News
  • Articles
  • Books
  • Videos
  • Hubs
  • Channels
  • EN
  • RU
  • 17 May, 25
  • About
  • Contact
DotDev
  • Home
  • News
  • Articles
  • Books
  • Videos
  • Hubs
  • Channels
  1. DotDev
  2. Articles
  3. Разработчик провёл простой HTTP-тест «Go против Rust против Bun против Node», чтобы оценить производительность Bun 1.0

Разработчик провёл простой HTTP-тест «Go против Rust против Bun против Node», чтобы оценить производительность Bun 1.0

Разработчик Эмиль Привер решил провести простой HTTP-тест «Go против Rust против Bun против Node», чтобы оценить производительность Bun 1.0.

Привер создал эталонный тест для измерения количества HTTP-вызовов, которые сервер может обработать в секунду. В тесте сравнивается производительность Bun с GO, Rust и Node, поскольку эти языки часто используются веб-разработчиками для аналогичных целей.

Тест проводился как локально, так и на сервере Linode с двумя выделенными ядрами ЦП и 4 ГБ ОЗУ с ОС Debian 11

Все четыре теста были скомпилированы и запущены с использованием следующих команд:

  • Bun: bun build --minify ./index.ts --outfile benchmark.js && bun run ./benchmark.js;
  • Rust: cargo build -r && ./taget/release/rust;
  • GO: go build -o benchmark ./cmd && ./benchmark;
  • Node: node benchmark.js.

В тесте Привер использовал такие версии сред выполнения:

  • Rust: rustc 1.74.0-nightly (b4e54c6e3 2023-09-11);
  • GO: go version go1.21.0 darwin/arm64;
  • Bun: 1.0.0;
  • Node: v20.6.1.

Тест проводился со 100 одновременными подключениями, работавшими в течение 1 минуты, и во всех средах выполнения использовалась многопоточность. HTTP-тесты проводились с использованием wrk (HTTP benchmarking tool). Языки программирования в тесте используют встроенный HTTP-сервер, за исключением Rust, который использует Axum и Tokio, поскольку в Rust нет встроенного HTTP-сервера.

Прежде чем показать результаты, Привер пояснил, что задумал этот тест в основном из любопытства, так как хотел посмотреть, существует ли среда выполнения JS, которая могла бы работать почти так же быстро, как Rust и Go. Он не большой поклонник JS в целом, главным образом потому, что ему не нравится писать на этом языке, но он также чувствовал, что не существует среды выполнения JS, которая была бы «достаточно хорошей». По его мнению, в мире JS недавно появился Deno, который кажется немного быстрее, но все ещё недостаточно «достаточно хорош».

Локальные результаты теста (сборка на Rust обрабатывает больше запросов в секунду по сравнению с другими реализациями):

Тестирование JSON локально (задача — сериализовать простую структуру JSON и вернуть её). Тут Rust по-прежнему работает лучше всего, за ним следует Go, затем Bun и, наконец, Node:

Запуск теста в облаке (возврат только simple string):

Тестирование JSON в облаке:

«Приятно видеть, что Bun работает хорошо и, похоже, может конкурировать с Rust и Go по HTTP. Я также очень рад, что теперь есть достойная среда выполнения, которая "делает все это". В отличие от таких языков, как Rust и Go, которые предоставляют менеджеры пакетов, Bun также их предоставляет. Node, с другой стороны, имеет различные менеджеры пакетов (хотя NPM поставляется с Node) и множество разных способов достижения одной и той же цели, где каждый метод быстрее других. Хотя я в целом не большой поклонник написания JavaScript, я с нетерпением жду возможности создать что-нибудь с помощью Bun», — подытожил Привер.

В начале сентября состоялся релиз Bun 1.0 - среды выполнения JavaScript и TypeScript с возможностью отладки кода и поддержкой популярных веб-фрейворков. В Bun работают полнофункциональные приложения, созданные с помощью Next.js, Remix, Nuxt, Astro, SvelteKit, Nest, SolidStart и Vite. Разработчики проекта пояснили, что Bun запускается в 4 раза быстрее, чем Node.js. Эта разница только увеличивается при запуске файла TypeScript, который требует транспиляции, прежде чем Node.js сможет его запустить.

Tags
Articles JаvaScript Go Тестирование Rust TypeScript Github ОС
  • 10 Oct, 23
  • 0 comments
  • 762 reads
Source
https://habr.com/ru/news/760584/
SHARE:

Joe Black
Joe Black

News Author

Comments
  • 1000+
    Subscriptions
  • 1000+
    Followers
  • 1000+
    Followers
Tags
  • Python (230)
  • Программирование (181)
  • 2022 (170)
  • 2020 (151)
  • 2023 (149)
  • 2021 (128)
  • Java (128)
  • Linux (119)
  • 2019 (117)
  • Алгоритмы (112)
  • JavaScript (100)
  • Сети (99)
  • Api (92)
  • Инструменты (90)
  • Web (86)
  • Applications (79)
  • Microsoft (73)
  • PHP (73)
  • Google (72)
  • Обучение (72)
  • 2018 (68)
  • SQL (68)
  • C# (66)
  • ИИ (63)
  • Windows (60)
  • HTML (59)
  • 2017 (55)
  • C++ (53)
  • Базы данных (53)
  • Machine Learning (51)
  • Kubernetes (50)
  • Go (47)
  • Бизнес (47)
  • Паттерны (46)
  • CSS (44)
  • Проекты (42)
  • 2016 (41)
  • ИБ (41)
  • ОС (40)
  • .NET (39)
  • DevOps (39)
  • Docker (39)
  • React (39)
  • Проектирование (38)
  • Тестирование (38)
  • Математика (36)
  • Android (35)
  • Структуры Данных (35)
  • Информатика (34)
  • Framework (32)
Socials
  • Terms of Use
  • Privacy Policy
  • About
  • Contact

© 2025. DotDev — articles and lessons about IT programming and technology.