JavaScript БЫСТРЕЕ Java? | Сравним Bun vs Node vs Spring Webflux перформанс

preview_player
Показать описание
В JS мире только и разговоров что о блэйзингли фаст Bun, новом runtime для языка JavaScript, может ли он победить в производительности Java, которая считается королем нагрузки в мире бэкенда

00:00 - 03:08 Что будем мерить?
03:08 - 12:31 Как будем мерить?
12:31 - Результаты

Рекомендации по теме
Комментарии
Автор

Хотел переиграть и уничтожить Мурыча, и куда это в итоге нас привело?

Alex_Bardak
Автор

Интересные результаты! Пропустил трансляцию в телеграм, думал что не увижу, а тут такое!

KHIZb
Автор

Побольше бы таких гонок, люблю тачки и девок!

BEER-plmt
Автор

Было бы интересно проверить так ещё голенг

evzheniq
Автор

Сделаю уточнение: данный тест больше сравнивает библиотеки libuv и java.nio и (хз что там в Bun), которые все нативные
Я делал замеры java netty (Linux epoll) и c++ libuv (Linux epoll) они шли прям нога в ногу на похожих тестах. (сравнивал java и c++ (не js) )
по поводу Bun : года 3-4 назад проходил HighLoadCamp от яндекса, и там хитрые умельцы умудрились из epoll выжить максимум за счет хака с DMA но при этом страдала файловая система (если утрировать)(это все было на с или с++).
Я боюсь что Bun пошёл по той же дорожки, чтобы нарисовать красивые графики он хакает epoll за счет блокировки другой периферии . Когда они переболеют этим, графики выровняются.
Резюмирую:
js хорошо умеет перекладывать данные их нетворка в нетворк, (в libuv работа с файлами блокирующая и реализована через тред пулы)
java умеет очень хорошо перекладывать данные из нетворка на диск (kafka тому подтверждение) и как число-дробилка тоже неплоха
с/с++ хороши во всем кроме : менеджмента памяти, защиты памяти, порога входа

EgorFrade
Автор

Ещё не смотрел видео, но уже ставлю оцеку 120 пухлешей из 10.

zhenia
Автор

как у тебя голос изменился после тестов, аж взгрустнул)

undrheavrain
Автор

Было полезно посмотреть на графики утилизации cpu с разбивкой по типу user и system, также график использования сетевых портов. За видео спасибо

klyunnikovmaksim
Автор

А bun run без "--bun" точно будет работать на bun runtime, а не на ноде?

dimitritarasenko
Автор

Не знал что Цепкало разбирается в реактивном программировании

ungeheurenungeziefer
Автор

У js нет своего рантайма. Ты говоришь, что js асинхронно реактивный. Но только host среда определяет, как будет выполняться код

albionOnlineSchool
Автор

может позже покопаю насчет пропертей, вполне возможно что там есть хитрости для контейнера, но дело скорее всего просто в фреймворках, спринг в сравнении с этими лоно - это монстр который может все и любым удобным способом. вывод у меня этот складывается после посещения самой популярной в интернете страницы где меряются перформансом фреймворков, там в списке на первых местах по соседству с растом есть и java фреймворк от какого-то китайца, точнее как фреймворк, в нем пару классов и методов, обвязка над апи, вот и весь фреймворк, специально пилился под тест видимо) сприн по сравнению с ним в 4 раза медленнее, точно не помню уже. т.е. пока мы запускаем хелловорлд - мы меряем толщину фреймворка, когда запилим реальное приложение, то эта толщина будет малозаметна на общем фоне. ну а так получается, что средний джит компилятор победит хороший, если в первом программа раз в 10 короче на обработку приходит.

mdfkjje
Автор

Спасибо, Интересно! Доказали то же что и прошлый тестер. Только уточнить надо было - сколько памяти сожрет джава, на прошлом тесте закрашилось по расходу памяти. И самый сок - надо было добивать сюда php8.1 во там был рекорд раз 20+ объехал всех, и по памяти красавчик.

chip
Автор

В реальных условиях важна утилизация cpu, памяти и сети. Было бы интересно осветить этот аспект.
И еще как мысль: не факт что проверять на одном ядре правильно

ilyasdzhalilov
Автор

А Java скомпилирована в Jit или Aot? Вроде как тоже роляет.

Dan.
Автор

Загугли "Java vs Node Js. Who is the King. Benchmarking web frameworks" там у автора серия видео сравнений, сравнивает все языки и фреймворки к ним

MsTim
Автор

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

ilyasdzhalilov
Автор

5 лет смотрю как придумывают новые невероятно быстрые языки и фреймворки, а пишут (и пишу) код на джаве. Интересно почему?

zxkbclu
Автор

Эх, бедная жабка.... Но смотреть на ее код приятнее

mrsergey
Автор

Bun в эксперементальном режиме поддерживает API воркеров (Workers), так что можно создать воркеров по кол-ву ядер и в каждом воркере запустить веб-сервер. Правда, в Java, насколько я знаю, все данные лежат на куче в обертках, и все гоняется через байт-код; а в Bun, при правильно написанном коде - если используется мономорфизация вызовов функций, мы из-за JIT получим эффективный машинный код - так что при таком тесте, когда у нас и логики-то никакой нет, Bun по-любому выиграет. В целом же, поскольку у нас нет логики, то и непонятно, что мы тут тестируем? Сравниваем скорость кода, сгенерированного JIT и байт-кода Java? Но несмотря на бесполезность затеи, было бы интересно взглянуть также на результаты теста для Го и Раста )))

AlexanderBorshak