I'd also like to see Test 2 for: single thread vs multi thread Bun the winner of Node vs Deno vs Go Axum vs Zig std library vs Go vs Loco F# (giraffe) vs C# (minimal API) Python (blacksheep) vs Lua (openresty) Julia (std lib) vs Julia (oxygen) vs Julia (jewlia)
This result isn’t overly surprising. Bun is architected for environments where applications are running on a single CPU. Go is architected for running in environments with multiple CPUs. Constraining the tests to a single CPU is playing into buns court. The go runtime runs a separate cpu thread for network related syscalls. Other goroutines (each handler would get its own goroutine) could be running on one or more other cpu threads (goroutines are multiplexed onto the cpu threads by go’s runtime). The cost of switching between threads over a single cpu will be high and reduce performance.
@@stxnw yeah i’d be interested to see the results. For the first test, I would expect go to perform a bit better than it did in this sample as json marshaling shouldn’t contend as much with the thread conducting async network operations. But, I am a fool when it comes to the bun internals, so you are likely right!
@@stxnw Yes, but your not using Bun to run Zig code. If your services are really small sure the impact of javascript would be small and you'll measure the Zig component. The more javascript code you have the bigger impact it has, since the amount of code is so small you are correct its measuring Zig and not Javascript. All these tests are so small where the actual handler code in Javascript is neglectable. For instance this test does not do any authentication, verification/validating, processing, transformation or enriching of data. No REST API in production is this simple. All it does is take a json struct and push it to a db, the whole handler is 30 lines of code with no middleware. You not measuring real a javascript api with that little code.
You are possibly missing optimizations with GO. You don't define a value for GOAMD64, which will default to v1. Apparently if the host has higher capability then it can generate assembly with other extensions, but I wouldn't rely on the compiler doing that. Go wiki->minimum requirements->microarchitecture describes the possible values for x86_64. On M7a, it looks like you have access to avx512, which means you could set GOAMD64=v4. Similar flags exist for other architectures. This could also reduce code size, as it would mean the compiler won't be relying on dynamic dispatch to generate the faster codepaths while leaving a compatibility version behind, which wastes space and is slower.
Thank you for your videos! I really like to watch, because the setup is very consistent and you make good distinctions, like in this video with the “synthetic” setup and a more real word setup.
It's worth noting that in Golang, if you're optimizing for a scenario where you want to do this kind of test, you'd definitely not use the default json/marshal to return JSON, you'd use string substitution / a template system. JSON marshalling is *extremely* cpu and memory intensive relatively speaking to something like quicktemplate. I havent benchmarked it for a long time, but from memory it was something like 10x better. If you know the structure of your json object and can build it with fasttemplate (almost always can) then you can save a *huge* amount of CPU usage, and increase application throughput. Great video though, the ¬40% CPU utilisation's effect on Go was fascinating and so easily avoidable with autoscaling. Incredibly interesting. I'll be adjusting my autoscaling triggers from 60% to 40% based on this.
After went through so much compare between programing language. What do you think about making a video compare between database especially recently PostgreSQL 17 release and MySQL have major update to version 9. Thks.
Probably what is happening is that the bun.serve({static: {...}}) only interprets the js object once while the dynamic tests must run javascript every single request. I guess bun.serve static is a very convenient api for their static zig server
I think it would be nice if you did like a bigger benchmark once in a while to collect all your tests. So best rust, vs best go, vs django/fastapi (lol), etc.
ABSOLUTELY!!! :) Also he should take not stdlib from golang, since it just is not so performant as fiber etc! And: more cores ... really today cores are cheap and people that would care about such type of performance, at least run on 4 cores. Single core is just not realistic today anymore.
@@christianovergaard1081 I like to see Erlang go against Rust, because Erlang's BEAM is hyped for it's concurrency. Don't you think that will be worth being the benchmark of the Century?
HI Anton! Love your videos, can you do a bun vs deno2 comparison as well? I really want to see how will they behave since internally its just zig vs rust
Bun already comes pre-configured with optimization features that were not used in Go. Use goroutine to get closer to what is already offered in Bun's standard architecture.
the HTTP libraries use goroutines by default. He could use fiber I guess and some compilation optimisations, but I don't see how that is related to "using goroutines"
I've done extensive analysis like this internally. The optimal amount of cores is six and if you follow rectangular scaling, you'd want to have six instances also. There was a primagen discussion how this test needs to leverage multiple cores to be taken seriously. I can't give you the white paper, but I can assure you six cores is the optimal core count for golang and NodeJS
@@AntonPutra True, but the learning curve between rust and go it's insane, even you needed a second video with rust to optimize to beat go but with go on the other hand, you can get things done fast and easy
@@AntonPutra I understand it's just that if golang perform better in multiple core env than multiple instance with single than your test would be a little bit misleading but I understand that we always use multiple instance when deploying app even in golang so I don't know, anyway I like your content and keep going
Thank u, this was a very informative and frankly, quite entertaining video even though there is no animation or music at all. I think honestly, that Go as a GCPL has performed really admirably against Zig (a low level non GCPL). The tradeoff between performance (Zig) and memory safety (Go) is not easy to make. For this comparison please assume crabs 🦀 don't exist 😂
non-blocking I/O is great to handle request. but when you need to parse alot data, JS pushes the CPU, there is where GO shows it supremacy. maybe in the future, with a runtime using Static Hermes (a JS static compiler x10 times faster than actual engines), JS will be better in handle with this problem
Before JS can be sensibly compiled it needs types. Static Hermes uses type annotations for compiler optimisations. I don't know how concurrency and parallelism would work with JS with an AOT solution. It would require some stdlib from hermes to make that work, since that is something which is handled by the js engine. The lenghts people go to, to keep using JS is mind blowing.
If you're serving static content you're really just going to use a CDN or service that is optimized for it. Scenario #2 is far more illustrative. When we're talking microseconds difference in latency, it's more likely that other network factors will mask it from the client's perspective so I think it's a non-issue. Good video
Please Deno2 vs Bun or Deno2 vs Golang. Please don’t forget to use the new "Deno serve" syntax with the `deno serve -parallel` command, it behave like go! No need to create several instances, it takes all available without configuration except to `export default` a "fetch" key that hold a function looking like `handler(Request): Response`
Good time of the day! Please check your code again, deteriorated go performance is most likely caused by the fact that you forgot to Body.Close() Otherwise great benchmark, would love to check out the fixed version
please take a look. if you think i made a mistake somewhere, let me know or just create a PR from the github ui - github.com/antonputra/tutorials/blob/main/lessons/213/go-app/main.go.
Anton, Deno 2 just released. I'd love to see Deno vs Node.JS, Go and Rust. :) Your videos are saving us tons on time in testing and helping to win lots and lots of arguments :) Thanks! Keep bringing them!
Isn't test1 just testing how good the buildin json lib is? My guess would be that the bun json is either being jitted to really good optimal code or it's using a c++ biding. On the good side it's well known that v1 isn't fast, which is why they are msking v2.
Can you share your grafana dashboard json for this, I don't see it with the lesson. I'm attempting to replicate on a slightly more complex application and I'd like to compare in the same way.
The fact you can do 100KRPS on 2 js boxes is sort of mind-boggling to me. Well, to not exploit the heck out of this comparison, do benchmark bun vs go fiber in multi-threaded VMs. Possibly with in-memory caching(use otter in go), just to make the comparison land the point home.
you can, and i have the source code for each video in the description. just search how to install minikube on your computer; it's usually very easy with a package manager.
I'm trying to run your benchmarks myself by deploying AWS EKS cluster, however I'm not experienced with AWS or how to setup the monitoring. The furthest I got was just building the app images and uploading them to a repository. Is there any tutorial where you walk through running one of your benchmarks on AWS with Grafana?
Guys, what do you think about GORM, for a long time I preferred to use pgx and write my queries manually, but I've been using gorm for a week on a small project and I'm really enjoying it. although it is very far from being a LINQ
Meh, I found ORM really sucks if project grew up with a complex queries can make it slow overtime and try pretend your programming code is better than SQL. If you have time and you know SQL just dive in to SQL and write SQL procedure or function. It is easier for me to switch to other backend programming or write unit test in the future in case I don't like Go and switch to Rust. But that is just my personal opinion if I have to work with SQL.
well, i use m7a.large instances for all my application tests. in this video, i used 2 golang instances, in the last video, i used 1 go instance with 2 CPUs, and the maximum RPS was almost the same. not sure about latency.
Bun could be useful as a background worker. Imagine you have a go api which contains some functionalities with cpu heavy calculation that do not need to access a database. You could outsource that part of the your go api to a bun server which does the calculation and returns the result.
I'm curious, how much does it approximately cost to run load benchmarks in large instances of AWS EKS for 2 applications with 2 replicas each for 2 hours?
@@AntonPutra Am I correct in understanding that the cost of an experiment can only be known at the end of the month when the bill is issued, or is it possible to find out earlier on Amazon, for example, the next day? I think many subscribers, including myself, would be very interested if you made an overview video about the costs of your test runs that we see on the channel. This could be an idea for your new videos - evaluating the financial aspect of your launches on Amazon.
I would like to see Deno vs Bun. I would also like to see the C# vs Go again now that you are using Go stdlib. Although, maybe you should wait for .Net 9.0 since this being release next month.
unfortunately for tests like these its really hard to judge a language. For example, bun's built in sqlite is godly performance. Some of the drivers that bun is compatible with, are not really optimal for bun. I suspect thats the case with mongo driver here. Thanks again, nice work
well, sqlite is not for production, it’s just a local database for testing. i’ve already tested bun with postgres and mongo, and the results are the same so far
@@AntonPutra fair. I do think it will get better over time. But SQLite can be used for production actually, and there are even new tools around using distributed SQLite
I like to see Erlang go against Rust, because Erlang's BEAM is hyped for it's concurrency. Don't you think that will be worth being the benchmark of the Century?
The big problem I've had with Golang (as someone looking to learn the language )is that it seems like a dying language. So many frameworks and projects for Golang have been abandoned and no longer work properly or at all. It's such a shame, but it feels like I missed the boat.
🔴 To support my channel, I'd like to offer Mentorship/On-the-Job Support/Consulting (me@antonputra.com)
When are we getting a comparison with C/C++? I would most like to see C++ vs Rust vs Go, as these are the options for high performance.
Node vs Deno and/or Deno Fresh (real world test like Test 2 with Postgres or SQLite)
I'd also like to see Test 2 for:
single thread vs multi thread Bun
the winner of Node vs Deno vs Go
Axum vs Zig std library vs Go vs Loco
F# (giraffe) vs C# (minimal API)
Python (blacksheep) vs Lua (openresty)
Julia (std lib) vs Julia (oxygen) vs Julia (jewlia)
A performance overview of kafka vs pulsar vs nats vs rabbitmq vs activemq would be really great.
FastAPI benchmark
This result isn’t overly surprising. Bun is architected for environments where applications are running on a single CPU. Go is architected for running in environments with multiple CPUs. Constraining the tests to a single CPU is playing into buns court.
The go runtime runs a separate cpu thread for network related syscalls. Other goroutines (each handler would get its own goroutine) could be running on one or more other cpu threads (goroutines are multiplexed onto the cpu threads by go’s runtime). The cost of switching between threads over a single cpu will be high and reduce performance.
Bun can use workers. I doubt the results would change much. Bun is written in Zig afterall.
thanks for the feedback
@@stxnw yeah i’d be interested to see the results. For the first test, I would expect go to perform a bit better than it did in this sample as json marshaling shouldn’t contend as much with the thread conducting async network operations. But, I am a fool when it comes to the bun internals, so you are likely right!
Use PM2 and done you can use multiple CPUs with javascript, yeah it will eat more RAM, but RAM is cheap!
@@stxnw
Yes, but your not using Bun to run Zig code. If your services are really small sure the impact of javascript would be small and you'll measure the Zig component. The more javascript code you have the bigger impact it has, since the amount of code is so small you are correct its measuring Zig and not Javascript.
All these tests are so small where the actual handler code in Javascript is neglectable. For instance this test does not do any authentication, verification/validating, processing, transformation or enriching of data. No REST API in production is this simple. All it does is take a json struct and push it to a db, the whole handler is 30 lines of code with no middleware. You not measuring real a javascript api with that little code.
This match is the most anticipated by some viewers.
agreed
they're really fun but it also seems like people are taking the results way too seriously
😊
but why?
You are possibly missing optimizations with GO. You don't define a value for GOAMD64, which will default to v1. Apparently if the host has higher capability then it can generate assembly with other extensions, but I wouldn't rely on the compiler doing that. Go wiki->minimum requirements->microarchitecture describes the possible values for x86_64. On M7a, it looks like you have access to avx512, which means you could set GOAMD64=v4. Similar flags exist for other architectures. This could also reduce code size, as it would mean the compiler won't be relying on dynamic dispatch to generate the faster codepaths while leaving a compatibility version behind, which wastes space and is slower.
There is also PGO (profile guided optimizations) in go and more agressive inlining optimizations to be enabled
Raise the PR
I can bet processing HTTP requests does not require vector extensions
ok but i bet you can also optimize Bun
Please raise a PR with the changes, Anton will merge your PR and make a new video if there is performance improvements.
Thank you for your videos! I really like to watch, because the setup is very consistent and you make good distinctions, like in this video with the “synthetic” setup and a more real word setup.
thanks! i do my best
this series is really good!!
thank you!
It's worth noting that in Golang, if you're optimizing for a scenario where you want to do this kind of test, you'd definitely not use the default json/marshal to return JSON, you'd use string substitution / a template system. JSON marshalling is *extremely* cpu and memory intensive relatively speaking to something like quicktemplate. I havent benchmarked it for a long time, but from memory it was something like 10x better. If you know the structure of your json object and can build it with fasttemplate (almost always can) then you can save a *huge* amount of CPU usage, and increase application throughput.
Great video though, the ¬40% CPU utilisation's effect on Go was fascinating and so easily avoidable with autoscaling. Incredibly interesting. I'll be adjusting my autoscaling triggers from 60% to 40% based on this.
thank you for the feedback, I'll play with json sometime in the future
Also Golang encoding/json is slow, use fast-json
Sonic is the fastest JSON library that I have tested and does not require making significant changes to the code. Also the project is active.
@@therealgamingmaniac Why fast-json is good in serialization than encoding/json ?
After went through so much compare between programing language. What do you think about making a video compare between database especially recently PostgreSQL 17 release and MySQL have major update to version 9. Thks.
yes mysql 9.0.1 vs postgres 17.0.1 coming next
@@AntonPutra
Don't forget MongoDB, RavenDB YugabyteDB, DuckDB with Go pls
Probably what is happening is that the bun.serve({static: {...}}) only interprets the js object once while the dynamic tests must run javascript every single request. I guess bun.serve static is a very convenient api for their static zig server
maybe you're right
@@AntonPutra testing is easy, creating a good test is hard.. Creating a fair test is even harder.
Дякую за такий корисний контент! Вже почав вчити Go ;)
my pleasure 😊
Thanks for doing these, love them.
Interesting results! Can you also compare Python’s FastAPI with something? It is pretty fast and should be on par with Java Spring.
yes will do!
Very interesting. Need a table summarizing where each solution's relative strengths and weaknesses are. Golang pretty good overall.
Amazing work! Keep going!
I thought second test will be with multi-cpu, but you made it even better.
i'll do a multithreaded test soon
Great video. Hope you can make another video to compare between Bun with Elysia and Go with Fiber 👌
does elysia use a custom json parser?
Great video. I enjoyed it a lot and gave me some new perspectives. Thank you!
my pleasure
I think it would be nice if you did like a bigger benchmark once in a while to collect all your tests. So best rust, vs best go, vs django/fastapi (lol), etc.
ABSOLUTELY!!! :)
Also he should take not stdlib from golang, since it just is not so performant as fiber etc!
And: more cores ... really today cores are cheap and people that would care about such type of performance, at least run on 4 cores. Single core is just not realistic today anymore.
@@martinhotmann7868 Stdlib router was more than good enough when the requests have to do actual work.
just check final values and compare them in your mind or google spreadsheet. You can compare 3 values without youtube video
yes, I will do that as soon as I standardize the tests and optimize the infrastructure
@@christianovergaard1081 I like to see Erlang go against Rust, because Erlang's BEAM is hyped for it's concurrency. Don't you think that will be worth being the benchmark of the Century?
HI Anton! Love your videos, can you do a bun vs deno2 comparison as well? I really want to see how will they behave since internally its just zig vs rust
yes coming in about a week
would really love to see how deno 2 plays along
More like zig + jscore vs rust + v8. In addition, uWebSockets written in c++ acts as a server, so I think zig is more of a glue.
Bun already comes pre-configured with optimization features that were not used in Go. Use goroutine to get closer to what is already offered in Bun's standard architecture.
What do you mean by use goroutine in this context? Can you give me an example or PR?
the HTTP libraries use goroutines by default. He could use fiber I guess and some compilation optimisations, but I don't see how that is related to "using goroutines"
A comparison between go and c++ would be interesting
will do!
So when doing any real work go is better?
yes
Thanks for doing such a wonderful work
my pleasure, it's fun
Impressive. Bun is just under year old and competing NBA league, lets wait little while and see what happens!
lets see
Ayo, Deno 2 just dropped. Could you make compiled deno typescript vs go?
yes coming in about a week
would you re create go vs java benchmark please because as you know you didn't push them to the limit with the video that currently published.
I've done extensive analysis like this internally. The optimal amount of cores is six and if you follow rectangular scaling, you'd want to have six instances also. There was a primagen discussion how this test needs to leverage multiple cores to be taken seriously. I can't give you the white paper, but I can assure you six cores is the optimal core count for golang and NodeJS
It would be great if you set tooltip to display all in descending order. Nice tests. Great job
ok will check
Craaazy results! What about Bun vs Deno 2.0?
THIS. I really really want to know the benchmarks LOL
coming in about a week
What I learn with this channel: If you need to build a performant web server use Go
Yes, you use Rust
@@Александр-ф9в4юyou should use, учите инглиш
rust is also an option
@@AntonPutra True, but the learning curve between rust and go it's insane, even you needed a second video with rust to optimize to beat go but with go on the other hand, you can get things done fast and easy
@@cesarmartinez2207 I understand you. Rust is very hard, especially for people bad at programming in general... 😢
I think it's better to have 1 instance with 2 core than 2 instances with 1 core for golang case or you can make a video about it
I'll test it, but I use 2 instances to match Bun's setup, since it runs on a single thread
@@AntonPutra I understand it's just that if golang perform better in multiple core env than multiple instance with single than your test would be a little bit misleading but I understand that we always use multiple instance when deploying app even in golang so I don't know, anyway I like your content and keep going
Thank u, this was a very informative and frankly, quite entertaining video even though there is no animation or music at all. I think honestly, that Go as a GCPL has performed really admirably against Zig (a low level non GCPL). The tradeoff between performance (Zig) and memory safety (Go) is not easy to make. For this comparison please assume crabs 🦀 don't exist 😂
This test is really biased towards bun by using a single thread.
my pleasure
non-blocking I/O is great to handle request. but when you need to parse alot data, JS pushes the CPU, there is where GO shows it supremacy. maybe in the future, with a runtime using Static Hermes (a JS static compiler x10 times faster than actual engines), JS will be better in handle with this problem
ok thanks, i'll test it when available
Before JS can be sensibly compiled it needs types. Static Hermes uses type annotations for compiler optimisations. I don't know how concurrency and parallelism would work with JS with an AOT solution. It would require some stdlib from hermes to make that work, since that is something which is handled by the js engine. The lenghts people go to, to keep using JS is mind blowing.
excellent works!
I like all serials like this.
will it be python framework like fastapi or flask benchmark with others.
Thanks for such a good comparison video.
my pleasure
elixir vs golang 🎉
i remember 😊
@@공석원-v9b elixir will be *much* slower. Benefits of elixir are it's developer ergonomics.
@@Mentioum And Elixir is not good with memory, it just drinks memory like water
yes that is one I am actually interested in.
@@katungiyassin9947
Explain how it "drinks" memory.
I am curious about Swift 6 with hammingbird 2
ok noted
Nice vídeo! Do you have some documentation how to deploy the benchmarks that you do in your vídeos?
Thanks for the Golang vs Bun !
my pleasure, deno is coming soon as well
🔥@@AntonPutra
@@AntonPutra deno v2 is out now!
@@AntonPutra deno v2 is out now.
If you're serving static content you're really just going to use a CDN or service that is optimized for it. Scenario #2 is far more illustrative. When we're talking microseconds difference in latency, it's more likely that other network factors will mask it from the client's perspective so I think it's a non-issue. Good video
agreed
Please Deno2 vs Bun or Deno2 vs Golang. Please don’t forget to use the new "Deno serve" syntax with the `deno serve -parallel` command, it behave like go! No need to create several instances, it takes all available without configuration except to `export default` a "fetch" key that hold a function looking like `handler(Request): Response`
ok! will do in about a week
Good time of the day!
Please check your code again, deteriorated go performance is most likely caused by the fact that you forgot to Body.Close()
Otherwise great benchmark, would love to check out the fixed version
please take a look. if you think i made a mistake somewhere, let me know or just create a PR from the github ui - github.com/antonputra/tutorials/blob/main/lessons/213/go-app/main.go.
Anton, Deno 2 just released. I'd love to see Deno vs Node.JS, Go and Rust. :) Your videos are saving us tons on time in testing and helping to win lots and lots of arguments :) Thanks! Keep bringing them!
yes coming in about a week
Isn't test1 just testing how good the buildin json lib is?
My guess would be that the bun json is either being jitted to really good optimal code or it's using a c++ biding.
On the good side it's well known that v1 isn't fast, which is why they are msking v2.
I guess, but many benchmarks use static tests, which is why I include them
5:39 isn't there "availability" graph inconsistency?
i'll double check
Can you share your grafana dashboard json for this, I don't see it with the lesson. I'm attempting to replicate on a slightly more complex application and I'd like to compare in the same way.
The fact you can do 100KRPS on 2 js boxes is sort of mind-boggling to me.
Well, to not exploit the heck out of this comparison, do benchmark bun vs go fiber in multi-threaded VMs. Possibly with in-memory caching(use otter in go), just to make the comparison land the point home.
thanks, i'll try gnet as well
Can you please do Clojure (reitit) vs go? the bun vs go was unexpected but that is why testing is crucial
ok noted
Can I run these benchmarks locally in minikube? Is there any guide available?
you can, and i have the source code for each video in the description. just search how to install minikube on your computer; it's usually very easy with a package manager.
@@AntonPutra I already have minikube installed but I got stuck on how to deploy the servers and clients
I wonder how good nextjs APIs are as compared to a proper server using express
i'll test next.js in the near future
@@AntonPutra thanks 👍🏼
I'm trying to run your benchmarks myself by deploying AWS EKS cluster, however I'm not experienced with AWS or how to setup the monitoring. The furthest I got was just building the app images and uploading them to a repository. Is there any tutorial where you walk through running one of your benchmarks on AWS with Grafana?
yes, i have a few on my channel. just search for prometheus, but be very careful with aws.
please benchmark spring boot with virtual threads
I'll work on Java in a bit
I see that you using aputra/load-tester:v18 to run the tests where can I find the docker file for it?
i need to refactor it before i can release it, it's just a rust client with prometheus metrics
@@AntonPutra awaiting for your update
Guys, what do you think about GORM, for a long time I preferred to use pgx and write my queries manually, but I've been using gorm for a week on a small project and I'm really enjoying it. although it is very far from being a LINQ
Meh, I found ORM really sucks if project grew up with a complex queries can make it slow overtime and try pretend your programming code is better than SQL. If you have time and you know SQL just dive in to SQL and write SQL procedure or function. It is easier for me to switch to other backend programming or write unit test in the future in case I don't like Go and switch to Rust. But that is just my personal opinion if I have to work with SQL.
Sqlc
gorm is good for read tasks
I use gorm to read and pgxpool to insert/update/delete
🧐
Did not expect this. How about a deno vs bun?
Go was so limited in this test. Looking forward to tge multi cpu/thread test 💡
well, i use m7a.large instances for all my application tests. in this video, i used 2 golang instances, in the last video, i used 1 go instance with 2 CPUs, and the maximum RPS was almost the same. not sure about latency.
bun will still be fast on multithreadng with clusters
This kind of video is awesome!! Tks for This.
thank you!
what instances do you use on AWS?
m7a.large for applications and m7g.4xlarge for clients
ok noted!
Bun could be useful as a background worker. Imagine you have a go api which contains some functionalities with cpu heavy calculation that do not need to access a database. You could outsource that part of the your go api to a bun server which does the calculation and returns the result.
imagine using javascript in backend hahahahahahah
i think if you're a frontend developer, you can probably find a use case for bun, just to keep your codebase in the same language
But why not just go for that part as well?
The only reason to use bun over go is if your team is efficient in javascript
Pls can you do database performance benchmarking
yes coming next
Love these
thank you!
You could do a multi cpu test with workers
yes i'll do it soon
We need springboot with virtual threads vs go.
i remember 😊
@@AntonPutra Spring boot app with virtual threads, webflux and compiled with graalvm :)
I'm curious, how much does it approximately cost to run load benchmarks in large instances of AWS EKS for 2 applications with 2 replicas each for 2 hours?
best case $10, worst case $50 and if you forget to tear down after test $200 😊
@@AntonPutra Am I correct in understanding that the cost of an experiment can only be known at the end of the month when the bill is issued, or is it possible to find out earlier on Amazon, for example, the next day? I think many subscribers, including myself, would be very interested if you made an overview video about the costs of your test runs that we see on the channel. This could be an idea for your new videos - evaluating the financial aspect of your launches on Amazon.
you might need to run this benchmark again, bun 1.1.34 changed memory usage 👀
I'd love to see a test of Rust vs Bun
will do
Could you do Deno 2 vs golang please?
C++ vs rust?
i'll get to c++ soon
What do you make of the very last graph (CPU throttling)? Seems like Bun dipped below Go near the end of the test
Not sure, I need to investigate, but it does correlate with high latency
We need a benchmark between c++ and go ❤🙂
soon!
Bun isn't bad at all!
to run static routes
can you do python vs bun vs node?
i'll do python soon (faastapi)
Again with sqlite please
sqlite is used only for development, it is not a real database
@@AntonPutra I use sqlite for huge data of farms. It is very fast
please do go vs php, because i wanna explain to my company about how good golang
Request for two new items. First explaining these metrics and second fastapi vs go really want to see how the results will be.
ok got it, i'll do fastapi (python) soon
i think a benchmark returning html instead json (htmx) could be cool too
i'll get to UI soon, like react and angular, but I don't really see the benefit of testing server-side rendering
Please compare Fiber vs Bun
i'll do it but probably later
@@AntonPutra When?
I would like to see Deno vs Bun. I would also like to see the C# vs Go again now that you are using Go stdlib. Although, maybe you should wait for .Net 9.0 since this being release next month.
i'll wait. also, deno v2 is not officially out yet either
unfortunately for tests like these its really hard to judge a language. For example, bun's built in sqlite is godly performance. Some of the drivers that bun is compatible with, are not really optimal for bun. I suspect thats the case with mongo driver here.
Thanks again, nice work
well, sqlite is not for production, it’s just a local database for testing. i’ve already tested bun with postgres and mongo, and the results are the same so far
@@AntonPutra fair. I do think it will get better over time. But SQLite can be used for production actually, and there are even new tools around using distributed SQLite
Oh wow, WTF! UNEXPECTED!!!!
i expected this after i ran Bun vs Node.js 😊
I like to see Erlang go against Rust, because Erlang's BEAM is hyped for it's concurrency. Don't you think that will be worth being the benchmark of the Century?
Great video!!! 👏👏👏
Can you do java (springboot) vs node (nestjs)
Do you really know all programming languages and tools?
I don't think so. That's why he gives a repo link so ppl can make PRs if they want to optimize something
I can handle basic tasks in most languages, but I heavily rely on expert advice and optimizations to improve performance
These benchmarks should not be taking too serious as that is still clearly too simple thus far from real life applications to provide real insights.
i do my best to cover some real-world use cases, but you're right, they are too simple
Include deno 2.0 Please
The big problem I've had with Golang (as someone looking to learn the language )is that it seems like a dying language. So many frameworks and projects for Golang have been abandoned and no longer work properly or at all. It's such a shame, but it feels like I missed the boat.
great videos 💯💯
thanks!
Elixir vs All the others
i think since Erlang type langs run in beam they will have worse performance. But they can scale at ease. Id also like to see benchmarks
@@-foxy1859, you can use Rustler or Elixir NX for better performance, but it's too much. BEAM is about scale, concurrency, and fault tolerance
will do Elixir afte database benchmark
I would love to see a nodejs vs python. or a hono vs django 🙏
go getting destroyed by interpreted language 🤣🤣
Lesson learnt, no company runs on static data 😅😅
💯
Good content 👌
Do fastapi vs go too
thanks! i'll do python fastapi soon
Deno 2 vs go 😀
Or Bun with framework vs go Lang framework
what framework ? There is no use of a framework in go
@@yume6643 are you sure about that? 😀
waiting for the official release of v2, so far, Deno only has a release candidate
@@therceman well, give me one reason to use a framework over the stdlib?
I'd love to see how that MongoDb server was performing during all this 😂
😊
Where is Jarred?
?
Baldie is in his office fixing segfaults.
You should probably have chosen sqlite3 instead, as Bun is optimised for it.
what aboout deno vs golang
waiting for the official release of v2, so far, Deno only has a release candidate
Maybe next time use Honojs or Elysiajs for Bun, since it handle HTTP requests better.
thanks i'll get to Elysiajs soon
Why is the gopher stoned in the thumbnail?
😂
Give it a try to python sanic, it is really fast