Node.js vs Deno vs Bun

Содержание

У нас есть SSR-сервис для перегона реакт-компонентов в HTML. Он написан на ноде.

Ради интереса решили попробовать завести его на Deno и на Bun: вдруг они покажут себя лучше.

В первом подходе начали с малого: просто завели текущий код на альтернативных рантаймах. Мы не заменяли пакеты ноды на пакеты его собратьев и ничего не адаптировали специально под конкретный рантайм.

Просто установили текущие зависимости через Deno и Bun (благо оба умеют работать как с пакетами из npm, так и с пакетами ноды). Попробовали запустить.

Deno

С толчка не завёлся. Кидал ошибки. Их было несколько, и они последовательно всплывали после починки предыдущей. В конце концов завёлся.

Bun

Сразу завёлся. Но в некоторых кейсах всплывала ошибка, которую не сразу заметили. Поправили. В итоге тоже заработал.

Сравнение на проде

У нас есть несколько инстансов SSR-сервиса. Выбрали из них три для эксперимента:

  • первый — остался на ноде;
  • второй — на Deno;
  • третий — на Bun.

Все три инстанса работают на одинаковом железе, и нагрузка на них идёт одинаковая.

Результаты

График с результатми эксперимента

Нода и Deno оказались в нашем кейсе примерно равны по скорости ответа. Deno даже на несколько ms был быстрее.

Bun оказался в два раза медленней своих конкурентов.

Что дальше

Вероятно, попробуем адаптировать код под каждый рантайм, чтобы было честнее. Возможно, результат изменится, так как и Deno, и Bun будут работать не через адаптеры под пакеты ноды.