Rust vs Go: Performance Benchmark in Kubernetes

  Рет қаралды 175,489

Anton Putra

Anton Putra

Күн бұрын

Пікірлер: 415
@AntonPutra
@AntonPutra 4 ай бұрын
🔴 To support my channel, I'd like to offer Mentorship/On-the-Job Support/Consulting (me@antonputra.com)
@TheBerserkFury
@TheBerserkFury 4 ай бұрын
I’d like to see the performance of an Golang Echo server in a comparison please. Templating html or doing a database query would be realistic tests IMO!
@朝秦-f2h
@朝秦-f2h 4 ай бұрын
c#/dotnet vs java/springboot,thank you
@Robin-zy3tu
@Robin-zy3tu 4 ай бұрын
Axum vs acrix?
@yannick5099
@yannick5099 4 ай бұрын
For go html/template vs Templ or encoding/json vs Jsoniter could also be interesting.
@amirishere
@amirishere 4 ай бұрын
Hello, the second test feels sus! Why does the s3 upload take so much time? Is the Upload blocking? Can you replace it with an async wait and try again?
@likwidsage
@likwidsage 4 ай бұрын
I think this is a perfect analogy for go vs rust. You can get nearly as far as any language with Go with (relatively) little knowledge. You can get even further with deep knowledge of Rust.
@AntonPutra
@AntonPutra 4 ай бұрын
true
@everyhandletaken
@everyhandletaken 4 ай бұрын
Fair assessment!
@everyhandletaken
@everyhandletaken 4 ай бұрын
@@curio78 😂
@luanbui5273
@luanbui5273 4 ай бұрын
@@curio78 256MB ram maybe not enough for 1 java spring application to run
@everyhandletaken
@everyhandletaken 4 ай бұрын
@@curio78 of course Java is slower than C or Rust.. Java is generally 7th to 12th fastest, depending on the benchmark (and the depth of languages tested) & is usually sitting behind Go. More code for a slower result.. I'm not seeing the draw card of Java. People are generally moving away from Java, not to it. Doesn't mean it doesn't serve a purpose, but speed & simplicity are not its' strong points.
@RingOfStorms
@RingOfStorms 4 ай бұрын
Glad you went back and did it again after feedback from the other video. Nice
@AntonPutra
@AntonPutra 4 ай бұрын
🫡
@cole.maxwell
@cole.maxwell 4 ай бұрын
It is amazing to me how well go keeps up even being garbage collected. Glad you did this video. I think it’s much more fair to what rust is capable of. That said I would argue that most teams would be better served by go especially if you don’t have +10k rps problems and an extremely well defined problem space for your application. That’s because it was easier for you (and most devs) to get a fair well optimized application with go first time around. I find in the real world most projects only get one serious pass at the time it’s initially created.
@AntonPutra
@AntonPutra 4 ай бұрын
yeah, go is beginner friendly😂
@cole.maxwell
@cole.maxwell 4 ай бұрын
@@anonymousalexander6005 I don’t think that’s true. As someone who’s doing backend js begrudging at work if you are running in kubernetes golang start up time is a real advantage. No JIT needed either. Not to mention the memory usage. I can run a 3 go servers on the smallest ec2 instance no problem. Can’t say the same for JavaScript.
@a0flj0
@a0flj0 4 ай бұрын
Depends on the kind of work you do. Complex logic is better served by a compiler able to do more compile time checks and a language which has a much higher expressive power. Few real world workloads are as simple as serving constants or uploading some stuff to multiple places.
@TheSulross
@TheSulross 4 ай бұрын
The cost of writing and maintaining software is more paramount than the perf metrics in respect to, say, a 5% difference - for most software projects. There are systems software and infrastructure software that can warrant being written in a manner to achieve maximal perf, and/or efficiency of resource usage, and/or have stringent requirements on deterministic behavior. But that’s a rather narrow category of software projects. The majority of software projects are of a nature that can tolerate an automatic garbage collector - ala Golang
@a0flj0
@a0flj0 4 ай бұрын
@@TheSulross You're right. You don't learn Rust just to write such code that is served well enough by Go. You use Java for that 😀 OTOH, once you have learned Rust, it's a much better language than Go for just about anything. My gripe with Go is very specifically its rather poor expressiveness. More expressive languages allow you to write less code overall. Effort aside (which is only poorly correlated to lines of code anyway), fewer lines of code translate to fewer bugs - there are studies that show that all other things being equal, regardless of language used, bug density is proportional to lines of code.
@j-p-d-e-v
@j-p-d-e-v 4 ай бұрын
Love watching your benchmark videos.
@AntonPutra
@AntonPutra 4 ай бұрын
thanks!
@Kavantix
@Kavantix 4 ай бұрын
I believe the kubernetes CPU throttling is giving this benchmark an unfair comparison of the latency. Go is not aware of the cpu limit that you gave it. in general you should avoid cpu limits since how the kernel applies this limit will cause high tail latency, which can also explain why the throughput goes from 12K/s to 7K/s when throttling starts. Would like to see the same test but with rust and go on their own nodes which they can use fully (so without any cpu limits). And would also be interesting to see them running on one node where they both get the same amount of cpu request but again no limit to avoid throttling, the requests will still make sure that both can equally use the cpu
@AntonPutra
@AntonPutra 4 ай бұрын
ok i can do it, i was thinking about vm vs k8s benchmark due to throttling. i'll run few tests and see
@patryk4815
@patryk4815 4 ай бұрын
this is normal cgroup cpu limit nothing special, just golang don't care how to calculate GOMAXPROCS inside cgroup
@erkintek
@erkintek 4 ай бұрын
I think in real world app can be deployed like that, not under the perfect conditions. Go Lang should correct itself for limited usage.
@moutyum
@moutyum 4 ай бұрын
@@AntonPutra consider adding GOMAXPROCS env with fieldRef to your container manifest env: - name: GOMAXPROCS valueFrom: resourceFieldRef: resource: limits.cpu
@anothercrappypianist
@anothercrappypianist 4 ай бұрын
@@erkintek You can set the GOMAXPROCS and GOMEMLIMIT env vars according to the pod cpu and memory limits respectively (rounded down to the nearest integer in the case of GOMAXPROCS). I do this regularly with GOMEMLIMIT (sometimes also tweaking GOGC) but haven't yet tested GOMAXPROCS. But the theory seems sound: Goroutines will be scheduled over only that many OS threads, so there should be less thread contention which improves tail latency. Uber has a package called automaxprocs to handle this automatically, and they measure significantly better p99.9 latency. Anton, this could be an interesting thing to test.
@EzequielRegaldo
@EzequielRegaldo 4 ай бұрын
Woha, benchmarks fights ! nice videos ! I love your channel
@AntonPutra
@AntonPutra 4 ай бұрын
thank you! :)
@Krsaurav-cl5kj
@Krsaurav-cl5kj 4 ай бұрын
Hi Anton! I’d love to see a comprehensive course on observability and monitoring from you, covering everything from basics to advanced topics. It would be amazing if you could include: what to monitor (applications and clusters), how to monitor (tools and techniques), key metrics for applications and clusters, insights from 12+ years of experience, and an overview of metrics, logs, traces, OpenTelemetry, Jaeger, and how to create custom dashboards in Grafana. Also, a section on implementing monitoring for different programming languages would be incredibly valuable. Your approach and expertise in monitoring are unmatched on KZbin-I'm sure your course would offer insights that no one else provides. Thanks!
@AntonPutra
@AntonPutra 4 ай бұрын
thank you! yes it is coming!
@DarkMonkXES
@DarkMonkXES 4 ай бұрын
​@@AntonPutra Can't wait for it!
@kulikgabor7624
@kulikgabor7624 4 ай бұрын
Hey! awesome one! I took a look into the rust code and I saw that each time a new prepared statement is being created, while it could reuse statements. I'll take a look into S3 as well sometime and try to give it PR.
@AntonPutra
@AntonPutra 4 ай бұрын
Thanks! I appreciate it!
@joshka7634
@joshka7634 4 ай бұрын
@@AntonPutra The go code doesn't call prepare - I wonder if that's the cause for the CPU difference?
@ns2qhd520
@ns2qhd520 4 ай бұрын
Amazing video! I’m just starting to learn cloud as well so I’m glad I found your channel. An extra comparison that I think could be interesting would be adding in a node.js or even something like a python server (or both) as a comparison to show the concrete performance benefits we are achieving with go and rust. I imagine it’ll be a sort of Olympic athlete vs regular civilian comparison but could add good perspective to how well both of these are already doing despite already each having relatively similar limitations.
@SirRFI
@SirRFI 4 ай бұрын
Thanks for doing Rust vs (non-Fiber) Go. Would be interesting to see how PHP ecosystem compares to this. Not only classic frameworks (for example Symfony vs Laravel), but also newer solutions like ReactPHP and FrankenPHP.
@npcemprove6016
@npcemprove6016 4 ай бұрын
PHP is not about speed. I compared go vs php and php totally lose for all types of benchmark. I dont see any reasons to write new applications in php.
@SirRFI
@SirRFI 4 ай бұрын
@@npcemprove6016 PHP's strength lies in established and developed ecosystem, which can help deliver product faster. Either way, I am curious how it compares, but it obviously doesn't win in performance.
@fernandobalieiro
@fernandobalieiro 3 ай бұрын
​@@npcemprove6016I mean, I wouldn't write a application for a local business with Rust, php or rails on that case are just overall great, its on the name, "personal home page", it was never meant to be a meta level language
@edism
@edism 2 ай бұрын
​@@npcemprove6016 tell me more about the tests you ran, some specifics would be useful.
@npcemprove6016
@npcemprove6016 2 ай бұрын
​@@edism in few words, ok. REST API, several middlewares, same database, same functionality for php (Lumen) and Go (stdlib). Lumen handles 1000 req/sec, Go 20000 req/sec. x20 at latency and much more throughput (run K6 grafana for tests, Go can handle 15-20 parallel loads-threads while PHP got sick at 2-3). Another example real-world use case. I wrote a Go service for XLSX generation. For phpspreadsheet it took x1000 times longer than for go (excelize lib). PHP itself slower than Go + PHP libs written by community without performance in mind. Hey, phpspreadsheet doesn't have stream writing mode! These 2 factors significantly slow down PHP apps.
@SiddharthPant
@SiddharthPant 3 ай бұрын
This was huge hard work and I appreciate the effort you put here. Can you do this test with Laravel PHP to see how it fares against these large RPS? That will be a good comparison to understand how much a batteries-included framework slows or increases latency.
@AntonPutra
@AntonPutra 3 ай бұрын
thanks! i'll do php soon
@BlackwaterEl1te
@BlackwaterEl1te 4 ай бұрын
Thank bro for doing that second test scenario, because that is a more frequent use case where you are talking to other services doing file and network stuff.
@Gabonidaz
@Gabonidaz 4 ай бұрын
Rust is really incredible, it's shocking to see how fast it is and still offers so many features.
@AntonPutra
@AntonPutra 4 ай бұрын
yeap!
@Hardcore_Remixer
@Hardcore_Remixer Ай бұрын
Well, it is intended for embeded systems too, so it kinda has to offer performance on par with C/C++.
@naphaten
@naphaten 3 ай бұрын
Great video! Very clear and concise! I really liked the recap, as I didn't watch the previous video.
@AntonPutra
@AntonPutra 3 ай бұрын
thanks!
@abhinavadarsh7150
@abhinavadarsh7150 4 ай бұрын
Go vs Elixir, Specifically for real time communication, where you have to maintain ws connections and send and receive messages from them.
@codeaperture
@codeaperture 4 ай бұрын
This is great esp the ecosystem of erlang and telecommunication. I prefer Go, coz it has better ROI on what I do(APIs). My ROI is balance btw devtime and speed.
@RxDiscovery
@RxDiscovery 4 ай бұрын
Thanks for all the work you've done to produce these tests. I would like to add a small modification to the Rust code, you are using Serde for serialization and deserialization, use sonic-rs instead, it will give you 20% more performance.
@erikfundercarstensen7344
@erikfundercarstensen7344 4 ай бұрын
I would guess not since rust doesn’t seem to be CPU bound, but could be interesting 😊
@HaydonRyan
@HaydonRyan 4 ай бұрын
I would LOVE to see the optimizations benchmarked next to each other as another video. Eg. Changing to cope on write improved speed by 20%. That way the audience would learn some optimization techniques vs just seeing what frameworks / languages are the most efficient.
@AntonPutra
@AntonPutra 4 ай бұрын
Thanks! I keep getting PRs to improve Rust, Go, and other frameworks. I'll consider creating another video to go over each optimization technique I've received so far.
@HaydonRyan
@HaydonRyan 4 ай бұрын
@@AntonPutra Awesome! thanks - I'm really enjoying your videos! super cool stuff here!
@r1nlx0
@r1nlx0 3 ай бұрын
This is actually really great video on monitoring pods in production, thanks for creating this video, this will be very helpful resources for more junior engineer to benchmark service (regardless of the content).
@AntonPutra
@AntonPutra 3 ай бұрын
thank you
@joshka7634
@joshka7634 4 ай бұрын
It looks like the go postgres library automatically caches the prepared sql statements, but the rust tokio_postgres connection don't (you can opt-in to this with prepare_cache instead of prepare though).
@AntonPutra
@AntonPutra 4 ай бұрын
thanks, i got your PR
@joloppo
@joloppo 4 ай бұрын
I think it would be nice to test with Postgres reads/ writes only, as it will show how well the two handle async operations in general.
@AntonPutra
@AntonPutra 4 ай бұрын
ok i'll keep this in mind
@SkaArg87
@SkaArg87 4 ай бұрын
I love watching your comparisons; I really enjoy your videos. I hope you can make a comparison between Fiber, Iris, and Gorilla Mux. Best regards!
@AntonPutra
@AntonPutra 4 ай бұрын
thank you! noted! never heard about iris before :)
@rafaelfess
@rafaelfess 4 ай бұрын
Add Hertz to the list too!
@connor_hill
@connor_hill 4 ай бұрын
The big question - "Is the extra cost of developing a large app in rust worth the (minor) additional server costs if you choose go?" If you build a project in Rust and it is successful, finding good rust devs to scale it is much more difficult (and expensive) vs go devs
@a0flj0
@a0flj0 4 ай бұрын
It's just a matter of time before many properly skilled rust programmers will become available. It's too good a language to pass up. There's evidence (a study performed internally by Google as it has started rewriting C++ stuff in rust) that once you've spent a couple of months in rust you start writing code much faster that with other languages - no surprise, I'd say, given rust's expressive power. Go's expressive power, OTOH, is awful, compared to most modern languages - which makes it a lot easier to learn, but once you're past that initial learning there's not much that you can improve further.
@hyper_channel
@hyper_channel 4 ай бұрын
In the real world, to solve business problems, 9 out 10 times you should pick Go. Rust would be the right pick for niche cases where your specific use case benefits from the performance. I keep reading how popular Rust is but the reality is that the job market for it is tiny, you would certainly have issues hiring to maintain that codebase.
@a0flj0
@a0flj0 4 ай бұрын
@@hyper_channel Provided you already know both languages, why would you _ever_ pick Go over Rust? Rust is faster, uses less memory and allows you to write the same thing in fewer lines of code. Also, the Rust compiler detects many more problems at compile time than the Go compiler. What would be even a single advantage of Go? That a half-retarded code monkey who you wouldn't trust writing a hello world on his own could possibly understand the code? That's not relevant, in a professional setting. The only situation in which Go would be a better choice is when your team already knows Go but doesn't know Rust, and the task at hand is a small one-off. If it's a larger project that's performance-critical, learning Rust already pays off. If it's a larger project without stringent performance requirements, Java or C# will do just fine, and still allow you to write less code faster. Go filled a niche at a time when there was nothing to fill it: a relatively simple language adequate for writing robust and not overly complex systems software. Rust fully covers that, and much more, and does so better than Go. Recently, Google started to rewrite its massive C++ codebase in Rust. They're the ones who created Go in the first place. How come _they_ didn't pick Go over Rust? Oh, and Google also translated some code from Go into Rust - leading to lower memory usage and lower bug count. Google hires tens of thousands of programmers, in case you missed it. Also, there's some pushback, but Linus is supporting Rust being used in the Linux kernel. Amazon and Microsoft are also using Rust. You won't need to search much for a job if you know Rust well. The only reason there are more jobs for Go is that Go is an older language.
@a0flj0
@a0flj0 4 ай бұрын
@SilasDuarte-e9k There's no optimization if your team already knows Rust. Unless you write the code in certain ways which cause Rust to generate inefficient binary code, Rust and Zig provide comparable performance. Zig or Go may make sense if your team doesn't know Rust already and if your project asks for performance but is expected to remain small and simple long term. For larger and more complex projects, even if your team has to learn Rust first it is still worth it.
@exapsy
@exapsy 4 ай бұрын
@@a0flj0 I agree that Go has limited expressive power, "awful" is a bit sensationalist language though it's not awful but it is very limited compared to lower level languages like Zig, C, Rust, C++. Although, on your example of "you start writing code fast with other languages" you a) provide no sources b) initially compare it w/ c++, which I assume was the language you're referring to. C++, Rust and Go couldnt be further apart. No way, in any universe, you can write a microservice in Rust as fast as you can write it in Go. It's not even close. You yourself said that just because Go is simple, it's easier to learn, and thus easier to write software. You're contradicting yourself when you say that you can write faster services in Rust than with Go. Rust comes with a significant cost, and that is writeability, maintenance, expensive development. That cost, will translate to Server costs vs Development efficiency costs really fast, as somebody can already assume reading your own argument about how Go is easier to learn and write in it just because it's simple. Everything seems to come at a cost.
@LinuxForLife
@LinuxForLife 4 ай бұрын
Nice! A lot more in line with what I saw with other tests. 👍
@AntonPutra
@AntonPutra 4 ай бұрын
thanks!
@wltechblog
@wltechblog 4 ай бұрын
PR sent with some basic improvements to the Go version.
@christophercaldwell6641
@christophercaldwell6641 4 ай бұрын
I work with some people that think Node is good enough. I’d love to see the same comparison, with Node and/or Python mixed in. I know they’re not in the same league, I’m curious just how far out performed Node would be in this test. Very cool stuff, thanks for doing this!
@yangli1437
@yangli1437 3 ай бұрын
Very useful video, thanks for your hardwork.
@AntonPutra
@AntonPutra 3 ай бұрын
thank you!
@francoisscala417
@francoisscala417 4 ай бұрын
Have you set the GOMAXPROCS environment ? By default golang is not aware of cpu usage limit and will try to run as many threads as there is physical cpus.
@AntonPutra
@AntonPutra 3 ай бұрын
not in that particular video, but i've improved since then. thanks for the advice anyway
@Kai-lb3fe
@Kai-lb3fe 4 ай бұрын
Is surrealdb really as fast as they claim? I know it’s fast with little data, but I’d love to see some benchmarks vs other databases with lots of rows.
@Kai-lb3fe
@Kai-lb3fe 4 ай бұрын
Would love to see how rocksdb vs the tikv cluster for data storage effects it.
@LuizOtavio-wz1ik
@LuizOtavio-wz1ik Ай бұрын
There is a explanation, why in the first test, rust start to slow down even with available CPU and memory ?
@crab-cake
@crab-cake 4 ай бұрын
axum is great and more intuitive than the other rust frameworks but i wish there was a website. the docs are great but it would attract more developers if there was a website. especially for new developers because the rust docs are very difficult to read unless you are familiar with reading them.
@olokelo
@olokelo 4 ай бұрын
I wonder how this compares to real life scenarios. Like what's the scale of the app that constantly has 14k requests per second. How many users is that typically?
@AntonPutra
@AntonPutra 4 ай бұрын
it is possible that you have internal api which provides specific data that many your microservices would request, it's not necessary external api..
@perarneng
@perarneng 4 ай бұрын
Thanks for your awesome work!, It would be great if you could add a final time section at the end where you talk about conclusions drawn or summary of the finding.
@forbidden_lion
@forbidden_lion 4 ай бұрын
Gin vs Echo benchmark please
@AntonPutra
@AntonPutra 4 ай бұрын
thanks, noted!
@adrianhaley4815
@adrianhaley4815 4 ай бұрын
Hey, Anton. Love your content. I'm quite new to programming - how are you running these tests? Are you using a prometheus library inside the code which exposes metrics so it can bee scrapped? Would be awesome if you did a beginner introduction so we could learn how to do some of these tests ourselfs
@bungrudi
@bungrudi 4 ай бұрын
Good job. Would love to see more i/o centric middleware framework comparisons
@AntonPutra
@AntonPutra 4 ай бұрын
thank you! will do in the future
@wezter96
@wezter96 3 ай бұрын
Would be interesting to see how some more alternatives would compare like Hono, Elysia, Fastify, Express and .Net :D
@AntonPutra
@AntonPutra 3 ай бұрын
some of them next
@DanielSantanaBjj
@DanielSantanaBjj 4 ай бұрын
AWS has recently deprecated the GO runtime. And recently released the Rust sdk out of beta
@Icanfly-
@Icanfly- 4 ай бұрын
Go sdk v2 exists in 2024, if you mean lambda, provided.al2 or provided.al2023 are replacement of go runtime
@codingbott
@codingbott 4 ай бұрын
Great video! Because I`m not that deep into k8s, rust and go, a conculsion / summary at the end of the video would be nice. Thank you
@AntonPutra
@AntonPutra 4 ай бұрын
thanks! noted
@sytranvn
@sytranvn 3 ай бұрын
For a complex backend service. How do you benchmark it? Do you pick some of the most used endpoint to test?
@AntonPutra
@AntonPutra 3 ай бұрын
well, the most common use case is to interact with a database, aws services, and messaging systems like kafka
@fburon_
@fburon_ 4 ай бұрын
Love ur videos man, really useful
@AntonPutra
@AntonPutra 4 ай бұрын
thank you!
@nosh3019
@nosh3019 3 ай бұрын
Thanks for the informative video! I don't understand why Rust in 1st test cannot fully utilize more CPU than 60% and RAM when number of requests reach 25k/s! What are the resources that saturated here instead of CPU and RAM that makes the application slower?
@AntonPutra
@AntonPutra 3 ай бұрын
thanks! i try to improve the tests with each new video
@FrankTaylorLieder
@FrankTaylorLieder 4 ай бұрын
Many thanks for revisiting this test. These new results are much more in line with my expectations. The updated Rust code is also extremely easy to read.
@AntonPutra
@AntonPutra 4 ай бұрын
my pleasure, but fiber is still faster than rust 🙈 i was trying to find analog in rust to test and so far i got Ntex
@MarkNikkyPikky
@MarkNikkyPikky 4 ай бұрын
Did you consider using axum framework instead of actix
@AntonPutra
@AntonPutra 4 ай бұрын
yes, next video "actix vs axum vs rocket"
@j-p-d-e-v
@j-p-d-e-v 4 ай бұрын
@@AntonPutra looking forward to thi :) Thank you.
@belkocik
@belkocik 4 ай бұрын
@@AntonPutra nice 🔥
@ranggatohjaya5471
@ranggatohjaya5471 4 ай бұрын
Mantulll😊​@@AntonPutra
@markmakarov4544
@markmakarov4544 3 ай бұрын
Антон привет, спасибо за тесты и подробные разъяснения. Могу ли я где то увидеть примеры для аналогичных развертываний собственных нагрузочных тестов ? возможно есть готовые докер стеки(понятное дело интересуют конфиги для них, сами технологии понятны)
@AntonPutra
@AntonPutra 3 ай бұрын
da konechno na moem kanale vse est vkluchaya EKS tutorial, chto imenno interesuet? K8s stuff - github.com/antonputra/tutorials/tree/main/lessons/212/k8s vse open source
@goliafffff
@goliafffff 3 ай бұрын
Good job! But in second case you test minio and postgresql. For complete picture you should show CPU and RAM for minio and postgresql. Because they are real bottleneck. Anyway thank you for video!
@AntonPutra
@AntonPutra 3 ай бұрын
Thank you for the advice. I will include database CPU usage in the next test. I have Prometheus exporters for each database, but they have hundreds of metrics, and it's hard to fit them on the screen.
@buildingblockdev
@buildingblockdev 4 ай бұрын
I would like to see the comparison between the rust(actix) with the optimization and go (stdlib) and go(fiber )
4 ай бұрын
Why the suddenspike in memory usage in rust? @12:50
@joshka7634
@joshka7634 4 ай бұрын
Likely there are more in flight connections, and so more RAM used. It might be nice to add a gauge metric to count the number of concurrent connections to show this, but you can infer it from the request latency. If the request latency is rising, then the total connection time is taking longer and by applying Littles law you can see that the average queue amount growing.
@Yukiixs
@Yukiixs 4 ай бұрын
Very interesting! One benchmark i would be really interested on would be replicating floats vectors over udp; for moving 3d objects; ( Actually it could be any kind of vectorized data going through udp ) it should be pretty straightforward but could also make use of several optimisation like cpu intrinsics; and it would also be interesting to compare it over different cpu architecture and see if arm is really that big of a deal in terms of costs; Let’s say that one client have one vector of data that can change ( no need to add dirty bit / compression algorithms ) something like 60 time a second and it must be replicated to other clients; how many clients can it handle and what’s the error rate Would also be nice to have the comparison between go / rust / ebpf? / other?
@ronminnich2660
@ronminnich2660 3 ай бұрын
I'd be very interested to see results with TinyGo.
@AntonPutra
@AntonPutra 3 ай бұрын
Interesting, I've never heard of TinyGo before
@rezoberaia
@rezoberaia 3 ай бұрын
could you please make comparison c++ to rust ?
@walterszewelanczyk8848
@walterszewelanczyk8848 4 ай бұрын
I think you need to show the network metrics. Are you saturating network. Since rust isn't using all of the cpu or memory, i think you are hitting limits in the network. Also, for the last test, you are getting latency spikes in both rust and go at similar times again, implying network limits.
@AntonPutra
@AntonPutra 4 ай бұрын
ok, i have all the metrics. i will include them in the following videos, as well as packet drops
@erikfundercarstensen7344
@erikfundercarstensen7344 4 ай бұрын
Thanks, was looking for a while for a comment realizing that the bottleneck must be somewhere else when rust doesn’t max out the CPU
@rosadyhalid8172
@rosadyhalid8172 27 күн бұрын
Can we access the Grafana dash with private link, bro?
@quangtung2912
@quangtung2912 4 ай бұрын
Which json library did you use for serializing JSON. Most of the time when I saw the profile of benchmarks envolving JSON, the JSON marshal/unmarshal part always takes the most CPU. Could if you try a different library for it?
@razagr
@razagr 4 ай бұрын
which one you recommend?
@yassinebouchoucha
@yassinebouchoucha 2 ай бұрын
So in real world scenario (upload s3, sql query...) with the same expertise level at both runtime they have the same performance ?
@AntonPutra
@AntonPutra 2 ай бұрын
With Rust, you still get a better price to CPU ratio. I even rewrote my clients from Go to Rust to save 50% on infrastructure costs. It matters to me.
@yassinebouchoucha
@yassinebouchoucha 2 ай бұрын
@@AntonPutra Pretty rare where the cost of +50% of CPUs is more expensive than hourly senior Rust developer !
@oOBromOo
@oOBromOo 3 ай бұрын
If you used minio as s3 setup in your eks cluster the bottleneck might be the storage backend that is used by your minio instance
@AntonPutra
@AntonPutra 3 ай бұрын
Actually, I spent some time debugging that issue, and it turned out that the database and the size of the connection pool were the main problems.
@oOBromOo
@oOBromOo 3 ай бұрын
@@AntonPutra interesting, thanks for letting me know. FYI This idea came from my experience with minio in on prem clusters with a not so fast Netapp as backing storage.
@cromrin
@cromrin 4 ай бұрын
What charts library are you using? echarts?
@AntonPutra
@AntonPutra 4 ай бұрын
no it's just grafana charts
@dei8bit
@dei8bit 2 ай бұрын
Wow, this is unexpected .... so golang is better for file operations while rust is better for handle web apps querys ? I expected exactly the opposite
@EdubSi
@EdubSi 4 ай бұрын
Can you do the same tests but not setting a CPU limit in k8s (only request if you like it). We noticed that the k8s throttling is a Problem and using or restricting too much resources. We had 100% CPU spikes with a limit and without the services took only 1/3 of the production resources. Its only s problem if you run the service close to the limit of cou resources
@merlin6962
@merlin6962 4 ай бұрын
I'm a bit confused why comparing Axum with Go std is more fair than using fiber. The rust version is highly optimized because of the options that rust gives you, so I think it's only fair to do the same in the Go version. I understand that fiber isn't the best option for all cases, but for these benchmarks it would certainly be faster. I think for a benchmark like this there are two options: Use the most naive implementation in both languages or optimize both implementations as much as you can. I feel like in this test you optimized the Rust version a lot but went with a pretty naive implementation in Go. I don't see how that is a fair comparison tbh
@AntonPutra
@AntonPutra 4 ай бұрын
Thanks for the feedback. I'll run some tests between the most performant Go and Rust frameworks independently, and then compare the winners.
@xelesarc1680
@xelesarc1680 4 ай бұрын
What we need right now is list result of th e benchmark for every language , so whois better for some cases , idlove to see the web
@Mr.BinarySniper
@Mr.BinarySniper 4 ай бұрын
Sir, can you please make a video on "Deno" vs "Node" vs "Bun". You are our trusted one. we don't trust company benchmark. they always lies to us.
@Dipj01
@Dipj01 4 ай бұрын
Please make a Laravel vs express benchmark. Loving your videos ❤
@AntonPutra
@AntonPutra 4 ай бұрын
thank you! will do!
@CrapE_DM
@CrapE_DM 4 ай бұрын
I'm curious if the cpu and memory differences in the second test point to not using a buffered file strategy in rust with go using one.
@AntonPutra
@AntonPutra 4 ай бұрын
maybe i need to test
@CuriousSpy
@CuriousSpy 4 ай бұрын
Would be nice to see bottleneck in profiler instead of just client time
@AntonPutra
@AntonPutra 4 ай бұрын
are there any articles on that topic🧐?
@CuriousSpy
@CuriousSpy 4 ай бұрын
​@@AntonPutra a lot, yes
@CuriousSpy
@CuriousSpy 4 ай бұрын
​@@AntonPutra"how to profile go/rust code"
@AntonPutra
@AntonPutra 4 ай бұрын
@@CuriousSpy 🫡
@chasim1982
@chasim1982 4 ай бұрын
Thank You SIR, ❤ I learned real world technology from a great teacher, prayers for you! JazakAllah ❤ 🙏 🤲 👍
@thinhbui4835
@thinhbui4835 4 ай бұрын
I would love to see a comparision between golang grpc vs tonic
@musclecode
@musclecode 4 ай бұрын
But what if in the test where go started failing at 14k rps you re-ran it but gave the go pod 500mb or even 1gb. out of interest maybe performance would be close ? using more RAM at the cost of an easier language than rust could be worth it ?
@AntonPutra
@AntonPutra 4 ай бұрын
i don't think memory matters in this case but i'll check next time
@BekhzodIsmoiliy
@BekhzodIsmoiliy 3 ай бұрын
What about Zig VS Rust?
@AntonPutra
@AntonPutra 3 ай бұрын
i did around 3 benchmarks rust vs zig 😊
@BekhzodIsmoiliy
@BekhzodIsmoiliy 3 ай бұрын
@@AntonPutra Ah I yes now I watched them all) Thank you! What about Nim vs Zig?
@seRko123
@seRko123 4 ай бұрын
I might get roasted but can you do rails newest vs Django latest
@AntonPutra
@AntonPutra 4 ай бұрын
ok, noted!
@seRko123
@seRko123 4 ай бұрын
@@AntonPutra that will be awesome thanks!
@Bonta768
@Bonta768 4 ай бұрын
Excellent testing, thank you.
@erkintek
@erkintek 4 ай бұрын
At first test I think rust is not the limit, with %60cpu, and plenty of ram. K8s or requests may be?
@marcossouzajr1711
@marcossouzajr1711 3 ай бұрын
Could you test rust vs elixir? Thanks
@AntonPutra
@AntonPutra 3 ай бұрын
With Rust? I'll do Elixir vs Go first, and then we'll see. It depends on how it performs.
@MattHudsonAtx
@MattHudsonAtx 3 ай бұрын
It would be interesting to see Java using Vert.x vs Go and Rust.
@AntonPutra
@AntonPutra 3 ай бұрын
noted!
@nehjain
@nehjain 4 ай бұрын
Can you do rust(actix) vs nodejs(express) so I can convince my team and manager to use rust over nodejs 😅
@AntonPutra
@AntonPutra 4 ай бұрын
noted :)
@GabrielPozo
@GabrielPozo 4 ай бұрын
Great video!! Thanks!!!
@yongkangchia1993
@yongkangchia1993 4 ай бұрын
great learning about profiling n optimizations
@AntonPutra
@AntonPutra 4 ай бұрын
thank you!
@jackkorovev5217
@jackkorovev5217 3 ай бұрын
This video is interesting, but no more interesting than "apples vs oranges: the truth". That was a hit, last year.
@basiccoder2166
@basiccoder2166 3 ай бұрын
Does this mean, Rust is better than go in all benchmark?
@AlexanderMoon
@AlexanderMoon 4 ай бұрын
Спасибо за тесты. Особенно за реальный тест.
@AntonPutra
@AntonPutra 4 ай бұрын
bez problem 😊
@karukengamer
@karukengamer 4 ай бұрын
Great work 🙌
@AntonPutra
@AntonPutra 3 ай бұрын
thank you!
@AntonPutra
@AntonPutra 3 ай бұрын
thanks!
@toidihocdao-ux7ft
@toidihocdao-ux7ft 4 ай бұрын
dotnet aot vs java native vs go std pls
@AntonPutra
@AntonPutra 4 ай бұрын
thanks, noted!
@framegrace1
@framegrace1 3 ай бұрын
I think in the second case, you were really testing Minio. Not the apps.
@AntonPutra
@AntonPutra 3 ай бұрын
possibly, i'm using postgres or mongo now
@ranggatohjaya
@ranggatohjaya 4 ай бұрын
It's interesting if you benchmark not only by language programming, but also by Technology such as implementing grpc or graphql based on go vs rust vs c# vs python
@AntonPutra
@AntonPutra 4 ай бұрын
thanks for the tip, grpc vs rest vs graphql is coming. i tested grpc vs rest in the past as well and kafka vs grpc, lol
@martinhotmann7868
@martinhotmann7868 4 ай бұрын
Maybe Golang (Fiber) vs PHP v8.1 (+nginx if nessecary) next?
@ricnyc2759
@ricnyc2759 4 ай бұрын
Can you test PHP against other languages?
@foxwhite25
@foxwhite25 4 ай бұрын
Oh, you are parsing uuid every single request last time in rust, no wonder it uses so much cpu last time
@serbington
@serbington 4 ай бұрын
They deprecated the lambda runtime for golang too, a while back
@AntonPutra
@AntonPutra 4 ай бұрын
yeah just saw in in supported runtimes page, well i guess generic runtime for binaries is good enough
@Mr.BinarySniper
@Mr.BinarySniper 4 ай бұрын
fiber is best for performance. because we already saw the compression between go std/net vs fiber.
@reze_dev
@reze_dev 4 ай бұрын
Thank you for this great content
@uwontlikeit
@uwontlikeit 4 ай бұрын
Node VS Golang please? .NET VS Golang?
@alekc7292
@alekc7292 4 ай бұрын
Bro is so cool, but reccomend draw scheme every test and text load test profile on video example: client -> our app -> database client -> our app -> (database + s3) client -> our app -> s3 and with steps: test 1: 1. post request with random boyd size between X Y test 2: 1. upload file to s3 with size xxx sometimes i look graphics other test and try look different but its not correctly, and mb need create 3-4 load test profile with names and with descriptions + steps + scheme and use this profiles without changes every test other languages? and i think more best if result was in the end of video as tables
@yungouda
@yungouda 4 ай бұрын
Most large-ish apps I see have much more CPU usage, so you should add that in somehow. Maybe rendering a template dynamically. Also, p90 is a better metric here than p99. Go will benefit from p99 due to GC not running in the 1%
@pavelk2667
@pavelk2667 3 ай бұрын
Awesome!
@AntonPutra
@AntonPutra 3 ай бұрын
thanks!
@saiphaneeshk.h.5482
@saiphaneeshk.h.5482 4 ай бұрын
I hope fireship or prime watches this.
@LinacchiUwU
@LinacchiUwU 4 ай бұрын
Nowadays there's a lot of discourse (in some places) about moving from JS to PHP, especially Laravel. A performance benchmark between those two would be great!!
@ats0777
@ats0777 4 ай бұрын
When we are talking about go, rust.. it means that we are trying to match them with C... Js and php are 10000 times slower than these languages in congestion.. use case is different for js and php now a days.. not sure if it is really worth to compare js and php.
@trumvkl
@trumvkl 4 ай бұрын
Reference php on a rust & go benchmark is a joke lmao
@ats0777
@ats0777 4 ай бұрын
@@trumvkl exactly 😅🤣😂
@Protocolpimp
@Protocolpimp 4 ай бұрын
Absolutely no one is moving towards php
@hyper_channel
@hyper_channel 4 ай бұрын
You just made that up, nobody would move anything from anything else to PHP
@Chingizzhanarbaev
@Chingizzhanarbaev 4 ай бұрын
It seems your new improved rust code is based on Axum, not Actix, am I wrong?
@AntonPutra
@AntonPutra 4 ай бұрын
🤭
@canadachenyuChenyuCanada
@canadachenyuChenyuCanada 4 ай бұрын
Please compare speedb & rocksdb, thanks
@AntonPutra
@AntonPutra 4 ай бұрын
ok noted!
@lemarkar
@lemarkar 4 ай бұрын
Does the urge of comparing and proving rust is “awesome” come with its std?
@AntonPutra
@AntonPutra 4 ай бұрын
Just comparing different languages and projects. I don't have any agenda.
@nickw656
@nickw656 4 ай бұрын
can you compare Rust with C# too?
@AntonPutra
@AntonPutra 4 ай бұрын
yes will do in the future!
Try this prank with your friends 😂 @karina-kola
00:18
Andrey Grechka
Рет қаралды 9 МЛН
“Don’t stop the chances.”
00:44
ISSEI / いっせい
Рет қаралды 62 МЛН
Гениальное изобретение из обычного стаканчика!
00:31
Лютая физика | Олимпиадная физика
Рет қаралды 4,8 МЛН
Why do developers hate Rust?
8:20
Let's Get Rusty
Рет қаралды 161 М.
Deno vs. Node.js vs Bun: Performance Comparison
12:28
Anton Putra
Рет қаралды 83 М.
Rust vs Zig Showdown (HTMX Webapp)
19:57
Code to the Moon
Рет қаралды 19 М.
Rust: When C Code Isn't Enough
8:26
CodeAhead
Рет қаралды 180 М.
Redis vs Memcached Performance Benchmark
8:44
Anton Putra
Рет қаралды 34 М.