► What should I test next? ► AWS is expensive - Infra Support Fund: buymeacoffee.com/antonputra ► Benchmarks: th-cam.com/play/PLiMWaCMwGJXmcDLvMQeORJ-j_jayKaLVn.html&si=p-UOaVM_6_SFx52H
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.
@@isenewotheophilus6485 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.
@@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/...
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.
Антон герой нашего времени! :) Классно бы было проверить дикие, хайповые базы: 1) Surreal DB vs Edge DB (vs PostgreSQL для масштаба). 2) SQLite vs PostgreSQL
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.
@@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
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 chose Deno over Bun not just because of the usual claim, 'my runtime is faster.' The real reason is that, unlike Bun, the Deno team takes a more thoughtful approach to features. Bun releases features that no one asked for, including monkey patching.
Deno and Bun are both real fast! But for now, I'll stick with Node.js due to its ecosystem. Regarding the Requests Per Second (RPS) result, Deno 2 showed slightly lower RPS compared to Bun, likely because V8 pointer compression is disabled in Deno 2. If this issue is addressed, Deno 2 could potentially match Bun's performance!
what do you mean by ecosystem? isn't bun and deno compatible with all npm packages? and run on all major platforms? what bun and deno does not have that nodejs have?
@@isenewotheophilus6485people 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!"
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.
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)
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
@@wojciechosinski5927 it depends on which metric is the one being measured. Overall Deno performed better than Bun in Client Request Latency. One could argue that's what would matter the most in most use cases? So there's always a tradeoff (less memory/CPU vs client latency)
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.
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!
Please be careful with Deno. Found some funny stuff for that. I created a small project for an interview using next js. And with then app router stuff. What happened is that I used curl to send a Delete request with Body to my app, but could not find the body as it only returns ReadableStream: false. Switched running to NPM and it just worked. It was just a simple logging the passed data. Soo again, just be careful
that's interesting, I firstly though the memory between deno & bun would be almost the same (probably bigger than node). I though it's mostly because of the Typescript -> JS transpiler cache in both deno & bun, but turns out it might not because of only that in deno cases. I suspecting V8 memory fragmentation might be worst than JSCore (JSCore has much more simpler JSValue encoding than V8).
Anton, you have 3 videos for Rust VS Zig. the latest video shows that Zig beat Rust but the other two are the opposite. Which video should I bring to my boss if I want to use Zig? 😆😆😆
The boss probably wouldn't care 😂. Anyway, Zig vs Rust is not very conclusive as both are system-level PL and non-GC. It's more accurate to say they run almost neck-to-neck. But there is definitely a greater possibility than Rust that anything built in Zig/C/C++ can have bugs because they have weaknesses in memory management, we don't need a devops benchmark to know that.
Whenever I get a PR with improvements, I rerun my tests, so I guess the latest one is the most accurate. However, it uses a Zig framework with the new io_uring Linux kernel feature, which is why it's better. I also got a PR with Rust support for io_uring, but it's using experimental flags. I would suggest going over the PRs in my repo and looking at the detailed improvements with benchmarks attached.
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?
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!
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.
I guess overall rust's memory safety at runtime is at work with deno when we compare it to bun or node causing it to have more latency. Great video though
What memory safety feature in particular though? A lot of the safeguards are just present at compile time and in debug mode. Bun and Deno use different JS engines (V8 vs Apples ???). Another possibility could just be the efficiency of the libraries in each language. I also heard that the Bun creator does a lot of micro-optimizations. Overall, I think there are a lot of reasons for the performance difference. Comparing 2 languages by the performance of their ecosystems is very hard.
@@NabekenProG87 yeah it has more to do with optimizations than underlying language. you can completely misuse a language and an objectively slower language could outperform in that scenario. it all comes down to optimizations.
Really interesting one. In a more realistic case the performance is pretty much the same, meaning that Node is the best option in my opinion due to its maturity.
THIS IS THE MOST ANTICIPATED VIDEO FOR ME LETS GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
► What should I test next?
► AWS is expensive - Infra Support Fund: buymeacoffee.com/antonputra
► Benchmarks: th-cam.com/play/PLiMWaCMwGJXmcDLvMQeORJ-j_jayKaLVn.html&si=p-UOaVM_6_SFx52H
где 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
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
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?
@@isenewotheophilus6485 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.
@@isenewotheophilus6485he runs his tests with network local clients, it should be possible to do the same in this situation
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/...
I appreciate so much the effort you put into this! Thank you.
my pleasure!
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.
Антон герой нашего времени! :) Классно бы было проверить дикие, хайповые базы:
1) Surreal DB vs Edge DB (vs PostgreSQL для масштаба).
2) SQLite vs PostgreSQL
Killing it Anton! Thx for your hard work making these videos.
thank you!
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.
Oh perfect! exactly what i was looking for!!!
my pleasure! 😊
Waited so much for this!
I can only pray for your success and growth. Thank you for bringing more competition in dev tech with benchmarking :)
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
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.
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
🤷🏻♂️
I chose Deno over Bun not just because of the usual claim, 'my runtime is faster.' The real reason is that, unlike Bun, the Deno team takes a more thoughtful approach to features. Bun releases features that no one asked for, including monkey patching.
Still no global configuration so that's a no for me
You should have seen when the guy talked about Bun's latest C compilation thing on HN: "it was an unplanned feature" lmao
I love these tests! so insightful
than you! will do more
this is great. please redo these videos in a year or 2. it's nice to see how things change
This is the content quality that the people should be after.
amazing, lets not underestimate node just yet
Hats off to node for holding its own.
So up to 50.000 req/s Deno smashes the competition in terms of Client Request Latency all while being more stable.
I will go with Deno. Thanks!
Having comments on graphs makes video more interesting. Thanks ❤
Thank you for the video, Bun did great, so I'll stick with it.
Deno and Bun are both real fast! But for now, I'll stick with Node.js due to its ecosystem.
Regarding the Requests Per Second (RPS) result, Deno 2 showed slightly lower RPS compared to Bun, likely because V8 pointer compression is disabled in Deno 2.
If this issue is addressed, Deno 2 could potentially match Bun's performance!
Yeah, I am also thinking this.
He was using deno 2
what do you mean by ecosystem? isn't bun and deno compatible with all npm packages? and run on all major platforms? what bun and deno does not have that nodejs have?
@@alanwilliamduarte5617 This is true.
@@brietoe you can use uwebsocketsjs to get nodejs performance same to bun, because bun uses this lib under the hood
Any chance to see comparison of Full Stack Frameworks such as: Laravel, Ruby on Rails, Phoenix ect...?
Hey, nice to see your face! The quality of your videos is very high content-wise, and now it's also getting that stylistic polish.
Very surprised to see Bun handle that many rps.. impressive.
please do it for
nginx vs caddy vs openresty
lua vs golang
he did nginx vs caddy before
@@isenewotheophilus6485people 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.
Nice to see your face. Much better!
thank you!
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)
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
Nicely Explained with proof and visual. Loved it
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
Thanks, I was really looking forward to this! I had high hopes for Deno 2, sucks that it doesnt perform as well.
Same. It turns out they lied about benchmarks on their presentation. What a pity
@@wojciechosinski5927 it depends on which metric is the one being measured.
Overall Deno performed better than Bun in Client Request Latency. One could argue that's what would matter the most in most use cases?
So there's always a tradeoff (less memory/CPU vs client latency)
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.
Awesome! I really liked this video, pretty interesting and better quality 👍
I'm glad to see your face. It feels more natural to watch your videos. I like your eyes though
Drizzle vs Prisma ; with postgres
The Great JS Clash shall begin!
YEEEESSS!!!! I WAS WAITING FOR THIS VIDEO!!
Fantastic and eye opening video. Very well done. Thanks.
Hey great content thanks for the videos. Can you create a tests for spring boot servlet container tomcat vs jetty vs undertow ?
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!
Great content, thank you. I'm curious about EncoreTS; is it as good as they claim?
Keep this series please, use popular libraries with these same frameworks, prisma, drizzle, different redis clients!
Please be careful with Deno. Found some funny stuff for that. I created a small project for an interview using next js. And with then app router stuff. What happened is that I used curl to send a Delete request with Body to my app, but could not find the body as it only returns ReadableStream: false. Switched running to NPM and it just worked. It was just a simple logging the passed data. Soo again, just be careful
Bun crushes it! 🚀
🤣🤣 checkout previous benchmark. even slower then nodejs in reallife testing.🤣
😊
Yeah good to see that Bun performs better than node and deno. Jarred is just OP
@@bcassol yeah I am sure Jarred and his team works like crazy
Thank you for your videos, keep it up.
will do 😊
What if you run them with --parallel (I believe only Bun & Deno support this)
Would have put one database by language to avoid cross contaminating your results.
Otherwise, nice video as always !
that's interesting, I firstly though the memory between deno & bun would be almost the same (probably bigger than node). I though it's mostly because of the Typescript -> JS transpiler cache in both deno & bun, but turns out it might not because of only that in deno cases. I suspecting V8 memory fragmentation might be worst than JSCore (JSCore has much more simpler JSValue encoding than V8).
Thanks for the feedback. On a side note, I don't use TypeScript, just plain JS.
I hope your tests are fair, thanks for share
Terima kasih banyak bro 😊
Anton, you have 3 videos for Rust VS Zig.
the latest video shows that Zig beat Rust but the other two are the opposite. Which video should I bring to my boss if I want to use Zig? 😆😆😆
The boss probably wouldn't care 😂. Anyway, Zig vs Rust is not very conclusive as both are system-level PL and non-GC. It's more accurate to say they run almost neck-to-neck. But there is definitely a greater possibility than Rust that anything built in Zig/C/C++ can have bugs because they have weaknesses in memory management, we don't need a devops benchmark to know that.
Whenever I get a PR with improvements, I rerun my tests, so I guess the latest one is the most accurate. However, it uses a Zig framework with the new io_uring Linux kernel feature, which is why it's better. I also got a PR with Rust support for io_uring, but it's using experimental flags. I would suggest going over the PRs in my repo and looking at the detailed improvements with benchmarks attached.
JS Devs will suggest 20+ frameworks and 20+ libraries.
It's always been like that 😊
Мужик подскажи пожалуйста какую ты тулзу юзал чтобы тесты с графиками так красиво отображаллись?
Haskell please? 🥺
Awesome. Thanks again.
You are the goat Anton
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?
Haha, this reminds me of the Fireship channel, where viewers often joke that it's AI-generated because the videos only use a voiceover.
😊
I would be very interested in someone doing this but not just micro benchmarks
love this
thank you!
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
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.
Bun is based on uWS (uWebSocket)... What if we use uWS in node?
Node too uses uWS
I guess overall rust's memory safety at runtime is at work with deno when we compare it to bun or node causing it to have more latency. Great video though
thank you! will do
What memory safety feature in particular though? A lot of the safeguards are just present at compile time and in debug mode. Bun and Deno use different JS engines (V8 vs Apples ???). Another possibility could just be the efficiency of the libraries in each language. I also heard that the Bun creator does a lot of micro-optimizations.
Overall, I think there are a lot of reasons for the performance difference. Comparing 2 languages by the performance of their ecosystems is very hard.
@@NabekenProG87 yeah it has more to do with optimizations than underlying language. you can completely misuse a language and an objectively slower language could outperform in that scenario. it all comes down to optimizations.
Memory safety doesn't affect memory safety or performance, just denies compilation of incorrect operations.
I would love to see a benchmark of sqlite vs postgres!
Excellent. When you can : Erlang / Elixir vs alternatives for concurrency
go vs elixir would be very interesting
someone already did that and go won from elixer but C# was unbeatable
tell us about the total bill for those machine usage as well
Thank you from indonesia
damn, good video
thank you!
дино 2 должен же быть самым быстрым и эффективным судя по их графикам и пресс-релизу)
well i'm open to rerun the test if anyone can make it better 😊
@@AntonPutraNo, their charts on the press release do not use Deno 2. It’s an old chart with an old Deno version.
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.
What do you use for animated diagrams? 🎉
adobe suite
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...
Now please make PHP vs NodeJS, or laravel vs NodeJS
Really interesting one. In a more realistic case the performance is pretty much the same, meaning that Node is the best option in my opinion due to its maturity.
agree, the others are still just for weekend projects
That’s true
Putra is a Sanskrit word the oldest language of the earth Putra basically means son ❤
And I thought he was an indonesian as putra is commonly used here in Indonesia lol
@@gooddonuts9450 Indonesia was very much connected and United with India before Muslim/Islamic invasion
Node did really well with Postgres
💯
They’re all using the npm Postgres package which is probably finely tuned for node.js (rightly so)
I think of it he does it 🙌🙌 do you use k6?
no i use eks
So what is the cons of Bun? It's better in every metrics, it may have some downside.
Great test. Zig and c basically still killing it. But these numbers are so poor compared to a go server lol
thank you 👍
Brother! Correct lighting setup this instant :D Spare your eye and skin. Light should be higher and more dispersed.
🫡
Can we see these with vertical scaling enabled. Rectangular scaling of 6 cores is better for cpu bound applications. Try it : 🙏🏻
Thank you!
Deno v1 or v2 version in the video ?
What was the total AWS Resource cost for this Performance test?
how do you generate those awesome charts?
Thanks for effort
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.
what is wrong with deno and postgres?
You say and title the video postgres but the graphs say mongodb. A bait? Probably, but what was the actual db?
Can you also provide real world applications that have this request load? Because if 90% do not then these metrics are less interesting
good thing you are a person and not an AI
Where do you make your animations?
THIS IS THE MOST ANTICIPATED VIDEO FOR ME
LETS GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
😊