Почему Deno быстрее Node.js: расследование
jarick 2 часа назад Почему Deno быстрее Node.js: расследование Средний 6 мин 2.1K Node.JS * Веб-разработка * На официальном сайте Deno (раздел Built for the real world) красуется любопытная табличка. Согласно их...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Вот важная новость с фронта ИИ: jarick 2 часа назад Почему Deno быстрее Node. js: расследование Средний 6 мин 2. JS * Веб-разработка * На официальном сайте Deno (раздел Built for the real world) красуется любопытная табличка.
Согласно их замерам, Deno уходит в отрыв от Node. 65 раза:МетрикаDeno 2. 4Node 26Realworld HTTP (req/sec)72 40068 20044 000Hello-world HTTP (req/sec)85 60081 90056 300p99 latency (realworld)1.
Технические детали
76 msНезависимые тесты (denosaurs/bench, pkgpulse 2026, jsmanifest 2026) показывают похожую картину: Deno стабильно быстрее на HTTP-нагрузке. Я решил копнуть глубже и понять, где Deno получает преимущество по сравнению с Node. Проверяем гипотезу «tokio быстрее libuv»Самая очевидная мысль: Deno написан на Rust и tokio, Node.
Если один рантайм быстрее другого, значит, и весь сервер быстрее. Давайте проверим это, но с оговоркой: микробенчмарк сравнивает не полностью эквивалентные механизмы (uv_timer_t в libuv против tokio-тасков с sleep(0), yield_now() и вообще без await). Это не «event loop dispatch» в строгом смысле, а измерение скорости пробуждения одной задачи в каждом рантайме.
Как я тестировалЯ написал два автономных бинарника на Rust с одинаковой обвязкой: через FFI вызывает libuv 1. 1, второй работает на tokio 1. libuv_raw создаёт N таймеров (uv_timer_t) с задержкой 0 и запускает их через uv_run(UV_RUN_DEFAULT).
Отраслевые последствия
В колбэке, через атомарный инкремент счётчика. tokio_raw спавнит N задач в current_thread рантайме, собирает их через JoinSet и ждёт завершения. Каждая задача тоже делает атомарный инкремент.
Идея в том, чтобы измерить tokio и libuv, без JS, HTTP и V8. Сборка: cargo build --release (lto=fat, opt-level=3). Запускал в Docker на Debian 12.
Чтобы исключить влияние park/unpark, я прогнал три варианта tokio-нагрузки:Режим tokioЧто делает задачаpark? sleep(0)sleep(Duration::ZERO). inc()да (timer wheel)yield_now()yield_now().
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





