Advice for future benchmarks, when you monitor apps built on languages with garbage collection (java, javascript, c#) you should also monitor gc collections, pauses and so on. This is is one of the biggest performance bottleneck on these languages.
@@AntonPutra For Java, it's complicated because the JVM has several GC algorithms, and then there are several JVMs with different performance profiles, so you need to adapt to your application, which is time consuming.
Heyy we have a facecam, good progress! :) Also, I want to make a bit of a brave and maybe unrealistic suggestion: Azure vs AWS vs Google Cloud. Some workload similar to what you normally do. Choose similar machine types and storage, use each cloud provider's Postgres as-a-service solution.
@@theo-k4i8m agreed, and there's probably too many variables to consider, with hundreds of machine types and network settings that may change latency. Still would be nice though
It would make a lot of sense, here we're coming to conclusion that 20ms over 24ms per request at 80k rps is "Speed". But in reality, 24 ms is barely ever reachable in any capacity of interaction, other than server-server within same data-center.
Hey, just wanted to say that I love these! At some point, I would like to see a short course on the subject. Just working through test setup, things your take into consideration, testing codebase development, etc etc.
@@RaphaelBobillot42 Yeah that's true. Elixir compiles to erlang bytecode, as I understand it, so there shouldn't be much of a difference between those three languages. I guess it'd be more interesting to see any of those languages against Rust/Go/Node/...
I love how your videos are getting progressively and incrementally better and better each time. 👍🏻 Loving it. As an application layer guy this is stuff that I really don’t get as much exposure to, but would love to.
@@AntonPutraplease, if possible, add to your list comparison between any javascript interpreter (bun/deno/node) and laravel octane. I would really love to see what superceeds - fixed amount of workers or event based exexusuon
Lua vs go? They are not even comparable. I mean their purpose is totally different. One is compiled, garbage collected static typed language and the other is easy to embed dynamic language. It's like comparing shopping cart with airplane.
@@Gornius openresty is sponsored by cloudflare to embed and run scripts inside nginx, they could somehow use Go instead if they really wanted, but they chose Lua. No two languages are the same, sure they're different, but you can use literally any language for any kind of task, and sometimes the results may be surprising. Golang borrowed multiple return from Lua btw. Also they both share the keep it simple philosophy.
Антон герой нашего времени! :) Классно бы было проверить дикие, хайповые базы: 1) Surreal DB vs Edge DB (vs PostgreSQL для масштаба). 2) SQLite vs PostgreSQL
Damn... last time I saw your video about 2 weeks ago, I was thinking to comment about these 3... but for some reason I forgot to comment it, but you still made the video
It's very interesting to see the difference between vanila node.js vs popular frameworks. Nest.js for example. I know that it works on top of express or fastify but feels like those abstraction layers ruin all the performance. Thank you for you content!
I know you focus more on backend benchmarks, but your testing and benchmarks are amazing - would you be willing to expand into benchmarking different (front-end) frameworks too? I wish I had the devops experience to be able to setup and run the benchmarks myself on my local machine, but I'm afraid I will break something or inaccurately benchmark.
Great video! I don't understand how Deno can publish such different looking results. According to their latest marketing push, Deno beats Node and Bun in many metrics. Am I missing something or are the folks at Deno stretching the truth?
Benchmarks are all about which metric you consider the most important. Deno got the best overall Client Request Latency. One could argue that's what matters the most. (Which depends)
what's the difference between the first and the second test? in the first test, node.js loses to both deno and bun in rps but in the second test, node.js still wins in the rps, and also memory usage while having barely noticeable differences with bun in latency. which one is practical? the second test because of postgres? or?
Hey, it would be nice to have a Spring Webflux vs Quarkus vs Golang benchmark, the last quarkus vs golang didn't show the breaking point of any of those. Thank you for this awesome job!
That's a lot of videos! I would very much appreciate a reminder at the beginning of videos stating that synthetic benchmarks like these ones are not representative at all of real world scenario. Each real situtation deserves its own benchmarks, taking into account its specific context and constraints. And I feel like in most real word situtations the differences displayed in these benchmarks are negligeable.
Hey, just brilliant work! I know you are receiving a lot of requests, but anyway. It will be really insightful to compare node vs laravel octane and node vs spring boot on green threads.
Great videos! I get the impression that if I need an application that interacts a lot with a database, Node can be a good choice to some extent. Would it be correct to say that if my application only needs to process requests and interact with other APIs, bun performs better than Node?
The persistence layer (database) will be the bottleneck in virtually all cases that need persistence. In these cases, optimization is all about slow db interactions as much as possible (caching, indexes, query optimisation). The 2ms difference of the runtime is negligible compared to all db ops.
Awesome! (I skipped ahead a bit to the tests, the first part was a bit technical for me for just casual viewing) Ryan said deno is also optimized for cold starts. I think bun has made claims about being able to install packages quickly as well. Maybe that could be part of a test?
I wonder if Deno 1.0 or the new 2.0 was used here? Seems like Deno 1.0 but I could be wrong. Anyway Node the old horse of JS runtimes is still good at something namely working at the backend with Postgres. TBH I'd rather work with Bun/Deno 2.0 because they contain all the necessary runtime packages; NPM doesn't vet its packages thoroughly and sometimes people can end up installing malware instead, but if it's what we have to work with we have no choice I suppose.
🔴 To support my channel, I'd like to offer Mentorship/On-the-Job Support/Consulting (me@antonputra.com)
где fastapi ?
Wheres low level languages😢? Try Drogon(c++), rust(Ntex), rust(Tokio), rust(xtica-web)
@@MDFireX5нахуй он никому не нужен
compare java latest to any language you want
DB test
MS SQL VS Postgres VS MySQL
So he is real and not a robot from another dimension doing benchmarks on human technologies! 😂
😊
i was so focus on the video i didnt know until i came to read comments after finishing the video
are u sure? it must be AI 😂
Your channel's quality has drastically increased over time. I really enjoy watching your videos. Good job man, keep it up!
thank you! i do my best
True! 💯
+1 Respect
Advice for future benchmarks, when you monitor apps built on languages with garbage collection (java, javascript, c#) you should also monitor gc collections, pauses and so on.
This is is one of the biggest performance bottleneck on these languages.
Thank you. I'll include it in the upcoming benchmarks, though it may not appear on the main screen and will be shown at the end of the test
@@AntonPutra For Java, it's complicated because the JVM has several GC algorithms, and then there are several JVMs with different performance profiles, so you need to adapt to your application, which is time consuming.
Heyy we have a facecam, good progress! :)
Also, I want to make a bit of a brave and maybe unrealistic suggestion:
Azure vs AWS vs Google Cloud. Some workload similar to what you normally do. Choose similar machine types and storage, use each cloud provider's Postgres as-a-service solution.
That test will be flawed, the data centers might be far from each other
@isenewotheophilus6485 same server location can be used right?
@@theo-k4i8m agreed, and there's probably too many variables to consider, with hundreds of machine types and network settings that may change latency. Still would be nice though
It would make a lot of sense, here we're coming to conclusion that 20ms over 24ms per request at 80k rps is "Speed". But in reality, 24 ms is barely ever reachable in any capacity of interaction, other than server-server within same data-center.
@@theo-k4i8mhe runs his tests with network local clients, it should be possible to do the same in this situation
Now THIS was absolutely the unbiased benchmark I wanted to see. Thank you!
I appreciate so much the effort you put into this! Thank you.
my pleasure!
Killing it Anton! Thx for your hard work making these videos.
thank you!
Hey, just wanted to say that I love these!
At some point, I would like to see a short course on the subject. Just working through test setup, things your take into consideration, testing codebase development, etc etc.
Super cool, thank you!
BEAM languages, such as Erlang, Elixir & Gleam would be fascinating!
thanks! will do soon!
Well, as Gleam compiles to Erlang, I'm not sure that it would make any benchmark difference ? But I would be genuinely amazed to see an actual diff !
@@RaphaelBobillot42 Yeah that's true. Elixir compiles to erlang bytecode, as I understand it, so there shouldn't be much of a difference between those three languages. I guess it'd be more interesting to see any of those languages against Rust/Go/Node/...
@@RaphaelBobillot42The difference would be in the implementation, so you'd ideally want to choose the standard web tools for each.
I used erlang for 6 years and I really recomend to not use it for anything
Waited so much for this!
you are so good man, like this is the exact content i've always wanted
thank you!
Oh perfect! exactly what i was looking for!!!
my pleasure! 😊
I love how your videos are getting progressively and incrementally better and better each time. 👍🏻
Loving it. As an application layer guy this is stuff that I really don’t get as much exposure to, but would love to.
I would love to see how plain PHP, Laravel and Symfony app would perform. Great video as always. Keep up the good work!
thank you! i'll do php soon
@@AntonPutraplease, if possible, add to your list comparison between any javascript interpreter (bun/deno/node) and laravel octane. I would really love to see what superceeds - fixed amount of workers or event based exexusuon
tell us about the total bill for those machine usage as well
I can only pray for your success and growth. Thank you for bringing more competition in dev tech with benchmarking :)
Any chance to see comparison of Full Stack Frameworks such as: Laravel, Ruby on Rails, Phoenix ect...?
I would never use `--watch` with Deno in a production environment. That option/feature might be what's causing the higher latency in Deno?
Nah, I think --watch just uses inotify on the directory. So if there are no changes, it doesn't affect the program in the slightest.
@@LtdJorge Oh, good point. Yeah, I guess that's all right. Thanks for pointing that out.
bun doesn't have that big of a leap it wants to claim, bun's benchmarks are really gaming
Benchmark is really gaming
In this case yep, but I've used Bun for the past few months and it's a really different DX, everything like installs, runs and tests happens instantly
@@7heMech well same as deno lol, like in deno you don't even need a install step HTTPS Imports FTW! (bun lacks these, which is a big miss)
gaming
🤷🏻♂️
This is the content quality that the people should be after.
I love these tests! so insightful
than you! will do more
please do it for
nginx vs caddy vs openresty
lua vs golang
he did nginx vs caddy before
@@theo-k4i8mpeople are so lazy. He's going to be testing some fringe tech in 6 months and some noobie is going to show up like "node vs bun, please!"
@@isaacdruin 😂😂😂
Lua vs go? They are not even comparable. I mean their purpose is totally different. One is compiled, garbage collected static typed language and the other is easy to embed dynamic language. It's like comparing shopping cart with airplane.
@@Gornius openresty is sponsored by cloudflare to embed and run scripts inside nginx, they could somehow use Go instead if they really wanted, but they chose Lua. No two languages are the same, sure they're different, but you can use literally any language for any kind of task, and sometimes the results may be surprising. Golang borrowed multiple return from Lua btw. Also they both share the keep it simple philosophy.
Антон герой нашего времени! :) Классно бы было проверить дикие, хайповые базы:
1) Surreal DB vs Edge DB (vs PostgreSQL для масштаба).
2) SQLite vs PostgreSQL
7:05 How can deno drop request yet retain 100% availability?
It's being throttled by K8s, I guess it just returns 500 for those? Or the contrary, it may be returning a 200 but super late.
Perhaps the number is rounded.
After watching this video, I am interested to learn more about bun.js
It's good to see that in a real world data-driven application, node still holds up well
I’ve been telling you to use `deno serve -parallel` with the new syntax `export default { fetch(req): Response }` man!
I remember, I'll do a multithreaded benchmark as well
@@AntonPutrasoon? I love your videos, really cool.
@@AntonPutra strike while the iron is hot! deno serve --parallel
amazing, lets not underestimate node just yet
Bun vs Go.?
Damn... last time I saw your video about 2 weeks ago, I was thinking to comment about these 3... but for some reason I forgot to comment it, but you still made the video
I wonder if Deno, being so new, has some teething pains to work out?
I'd be interested in a re-test in 6 months
i'll do some more uses cases, aws, messaging systems etc
All of them have incredible performances. I pick deno because of the std lib and security features
Impressive Test Setup, Run, Insights, great work
What if you run them with --parallel (I believe only Bun & Deno support this)
Drizzle vs Prisma ; with postgres
Hey Anton, I want to ask which tools you are using for load testing and that can simulate high loads, such as 80,000 requests per second. Thank you
this is great. please redo these videos in a year or 2. it's nice to see how things change
Having comments on graphs makes video more interesting. Thanks ❤
Awesome! I really liked this video, pretty interesting and better quality 👍
Bun is based on uWS (uWebSocket)... What if we use uWS in node?
Node too uses uWS
Nicely Explained with proof and visual. Loved it
Keep this series please, use popular libraries with these same frameworks, prisma, drizzle, different redis clients!
It's very interesting to see the difference between vanila node.js vs popular frameworks. Nest.js for example. I know that it works on top of express or fastify but feels like those abstraction layers ruin all the performance.
Thank you for you content!
I love deno as a framework, the standard library is strong, it's typescript compatible by default and it can transpile TS code to a JS node module.
Hats off to node for holding its own.
Thank you for the video, Bun did great, so I'll stick with it.
Very surprised to see Bun handle that many rps.. impressive.
YEEEESSS!!!! I WAS WAITING FOR THIS VIDEO!!
I know you focus more on backend benchmarks, but your testing and benchmarks are amazing - would you be willing to expand into benchmarking different (front-end) frameworks too? I wish I had the devops experience to be able to setup and run the benchmarks myself on my local machine, but I'm afraid I will break something or inaccurately benchmark.
Very interesting and clean presentation of the results. No surprise, NodeJS is behind because it's older.
Great video! I don't understand how Deno can publish such different looking results. According to their latest marketing push, Deno beats Node and Bun in many metrics. Am I missing something or are the folks at Deno stretching the truth?
Benchmarks are all about which metric you consider the most important.
Deno got the best overall Client Request Latency. One could argue that's what matters the most. (Which depends)
what's the difference between the first and the second test? in the first test, node.js loses to both deno and bun in rps but in the second test, node.js still wins in the rps, and also memory usage while having barely noticeable differences with bun in latency. which one is practical? the second test because of postgres? or?
What was the total AWS Resource cost for this Performance test?
Hey, it would be nice to have a Spring Webflux vs Quarkus vs Golang benchmark, the last quarkus vs golang didn't show the breaking point of any of those. Thank you for this awesome job!
Using Spring Webflux on a real project I can tell you it is disappointing as we didn't see any perf better than classic Spring Web
What is more interesting is how much does it cost to run the machine in total?
By the way, thanks for the great effort!
thank you! well, the best case is $10, and the worst case per test is $50.
Haskell please? 🥺
Nice to see your face. Much better!
thank you!
Hey great content thanks for the videos. Can you create a tests for spring boot servlet container tomcat vs jetty vs undertow ?
That's a lot of videos!
I would very much appreciate a reminder at the beginning of videos stating that synthetic benchmarks like these ones are not representative at all of real world scenario.
Each real situtation deserves its own benchmarks, taking into account its specific context and constraints.
And I feel like in most real word situtations the differences displayed in these benchmarks are negligeable.
Thanks for making this video.
my pleasure!
Fantastic and eye opening video. Very well done. Thanks.
Cool video. I’d love to the see some .Net and IIS in there
Great test! Please do it again once Deno 2 was around for some time and received some improvements/fixes
TLDR: all 3 are about the same if the DB is the bottleneck
yeah, i'll be using larger ec2 instances to run the database next time
Thank you for your videos, keep it up.
will do 😊
so who is the clear winner here ? bun or am i missing something ? please help me
i need to come up with more "real world" use cases
@@AntonPutra cant wait to see more, Thanks for the great content
Terima kasih banyak bro 😊
Hey, just brilliant work!
I know you are receiving a lot of requests, but anyway. It will be really insightful to compare node vs laravel octane and node vs spring boot on green threads.
in the ads, Bun and Deno said thay 3 - 5 times faster. . The cost is integrating to the whole ecosystem node modules if you tent to use Bun and Deno.
how is deno slower than nodejs?
good question, same code base
please, supabase x vercel x firebase x convex scalability vs price
noted!
Can you test it with today new release of Bun 1.2?
what is wrong with deno and postgres?
Great videos! I get the impression that if I need an application that interacts a lot with a database, Node can be a good choice to some extent. Would it be correct to say that if my application only needs to process requests and interact with other APIs, bun performs better than Node?
The persistence layer (database) will be the bottleneck in virtually all cases that need persistence. In these cases, optimization is all about slow db interactions as much as possible (caching, indexes, query optimisation).
The 2ms difference of the runtime is negligible compared to all db ops.
Great content, thank you. I'm curious about EncoreTS; is it as good as they claim?
The Great JS Clash shall begin!
So what is the cons of Bun? It's better in every metrics, it may have some downside.
PHP vs Node js
Awesome! (I skipped ahead a bit to the tests, the first part was a bit technical for me for just casual viewing)
Ryan said deno is also optimized for cold starts. I think bun has made claims about being able to install packages quickly as well. Maybe that could be part of a test?
so who won, Deno or Bun? What should I use in my NextJs project? I am a newbie, I am not advanced coder.
Bun
Node is still capable and not worth switching over considering practical situations (Not raw performance).
Thanks for the benchmark.
Can you also provide real world applications that have this request load? Because if 90% do not then these metrics are less interesting
I hope your tests are fair, thanks for share
Please also compare with c++ drogon, I am curious
how do you generate those awesome charts?
What do you use for animated diagrams? 🎉
adobe suite
Thanks for the great video! I dont know enough about the changes from Deno to Deno2, but is it worth redoing this test with Deno2?
i'm using deno v2 in this video, here is a dockerfile - github.com/antonputra/tutorials/blob/main/lessons/217/deno-app/Dockerfile#L1
How are you generating those nice charts.
I wonder if Deno 1.0 or the new 2.0 was used here? Seems like Deno 1.0 but I could be wrong.
Anyway Node the old horse of JS runtimes is still good at something namely working at the backend with Postgres. TBH I'd rather work with Bun/Deno 2.0 because they contain all the necessary runtime packages; NPM doesn't vet its packages thoroughly and sometimes people can end up installing malware instead, but if it's what we have to work with we have no choice I suppose.
Deno 2.0.0. Look into the source code in the description.
Its deno 2.0.0 under Dockerfile
Thanks, I'll check out the source code first next time 😅
he literally showed the dockerfile
2.0.0 😊
Gleam vs Go/Node?
But why not compiling deno?
What do you use to create those graphs for benchmarks?
Could you test pocketbase with Go extend?
I would be very interested in someone doing this but not just micro benchmarks
Can you please test Laravel Vs AdonisJS or NestJS?
I would love to see a benchmark of sqlite vs postgres!
I don't really understand the focus on 2 vs 1 ms latency. I don't think it's possible to notice that difference in a real environment
Great tests!
It would ge interesting to do this with a bit more of a complex application. Which would need some more intricate test suite, but still...
It's normal for Rust to be slower than c and zig.
I'd like to test the stability for several weeks.