.NET (C#) vs. Fiber (Go): Performance Benchmark in Kubernetes

Поділитися
Вставка
  • Опубліковано 20 вер 2024

КОМЕНТАРІ • 384

  • @AntonPutra
    @AntonPutra  29 днів тому +8

    🔴 What should I test next???
    👉 [Playlist] New Benchmarks: ua-cam.com/play/PLiMWaCMwGJXmcDLvMQeORJ-j_jayKaLVn.html&si=p-UOaVM_6_SFx52H

    • @sangeethnandakumar2534
      @sangeethnandakumar2534 29 днів тому +1

      Amazing. Bro where can I find your C# and Go code used for testing. Any GitHub links?

    • @i.t.9015
      @i.t.9015 29 днів тому +3

      Rust vs Go

    • @Nick-yd3rc
      @Nick-yd3rc 29 днів тому +1

      Haskell please 🙏 ChatGPT can help🫠
      Scala sttp is a great wrapper, and akka/pekko perform very strongly in general with small heaps🤫

    • @ulrich-tonmoy
      @ulrich-tonmoy 29 днів тому +1

      zig vs Rust
      Zig vs Go
      Haskell vs Elixir Vs Gleam

    • @AntonPutra
      @AntonPutra  29 днів тому

      @@ulrich-tonmoy ok, just added to my list!

  • @__Michu__
    @__Michu__ 23 дні тому +7

    I like these real world test scenarios. And I love that you increased RPS until failure. Please keep doing that with every benchmark

    • @__Michu__
      @__Michu__ 23 дні тому

      I wish you would increase RPS in second test as well

    • @AntonPutra
      @AntonPutra  22 дні тому +1

      thanks, will do! i started to use eks to run those tests...

  • @Denominus
    @Denominus 21 день тому +10

    Your methodology is excellent. I much prefer this to the gamified mess that techempower has become. Startup time/cost, container size, memory/cpu usage, baseline memory/cpu usage are extremely valuable to us.

  • @yurii1111
    @yurii1111 29 днів тому +73

    Cool test actually.
    A few possible improvements except trying the AOT:
    1. Try enabling a full PGO (tiered PGO is enabled in .NET 8):
    # Full PGO
    ENV DOTNET_TieredPGO=1
    ENV DOTNET_TC_QuickJitForLoops=1
    ENV DOTNET_ReadyToRun=0
    2. Use slim app configuration:
    WebApplication.CreateBuilder() vs WebApplication.CreateSlimBuilder()
    3. Try increasing the minimal number of threads:
    ThreadPool.GetMinThreads(out _, out int completionPortThreads);
    ThreadPool.SetMinThreads(100, completionPortThreads);

    • @AntonPutra
      @AntonPutra  29 днів тому +9

      thanks for the tip! I'll definitely try it next time!

    • @kurumi690
      @kurumi690 29 днів тому +7

      ​@@AntonPutra yeap, it would be interesting with Native AOT too

    • @luvincste
      @luvincste 29 днів тому

      also the two async operations (await cmd.ExecuteNonQueryAsync() and await amazonS3.Upload(appConfig.S3Bucket, image.ObjKey, appConfig.S3ImgPath)) are running sequentially, while they could be started both together and awaited after they both have been started; sure, it's a small to really small improvement, but this is the point of knowing well the language and doing a test well: it's not easy *at all*

    • @johnhershberg5915
      @johnhershberg5915 28 днів тому +7

      @@AntonPutra I actually think you tested it fine. AOT is only for startup time. Tiered PGO is the default, so it makes sense to keep it here. My one complaint is that if you want this to be a "real world" test case your code should use Entity Framework as that's the most standard thing. I took a look at the code and you're doing it with Npgsql's built-in datasource. I don't know anyone who would do this in a real world application. There's all sorts of caching that you're missing from Entity Framework.
      Note that I think the way you did it is actually faster. EF has overhead. But I would still very much like to see that comparison instead.

    • @neonmidnight6264
      @neonmidnight6264 28 днів тому +11

      None of these are needed, with vanilla configuration .NET is strictly better than Go. Anyone who ever looked at Go's compiler output and GC throughput knows that both are underwhelming. Note that for *small* deployments like these using NativeAOT is a good idea. .NET 9 also enables DATAS by defvault which is a new GC mode for more dynamic scaling of active heaps and their sizes based on load profile. This massively improves low heapsize scenarios like this one. Generally speaking you have to understad that for high throughput workloads 256mi is anemic. Bump it up to 512mi and you will see a completely different picture. Same applies to more core which .NET's threadpool and task system can utilize much more effectively than fixed runtime threads setup in Go. Lastly, I suspect the culprit here is S3 SDK, as it has quite room for improvemet and Amazon posted like a week ago that the have new preview version which is faster and has much less wasted allocations. The open question is also about Go using connection pool while .NET seemingly avoids opting into that, which would impact the behavior significantly and make it apples to oranges comparison.

  • @nordeenhasan6030
    @nordeenhasan6030 4 дні тому +3

    I really didnot expect Golang will perform better than .NET, thanks.

    • @AntonPutra
      @AntonPutra  3 дні тому +2

      i got some advice how to improve, wil update soon

    • @ml_serenity
      @ml_serenity 5 годин тому

      Scenario matters. Also, .NET 9 will have a lot of optimizations, so would be interesting to see how it fares.

  • @cheukmingau983
    @cheukmingau983 29 днів тому +32

    To further reduce the image size of Golang, you can use UPX to further compress the executable which usually results in 40-50% file size reduction.

    • @AntonPutra
      @AntonPutra  29 днів тому +4

      cool, thanks for the tip! i'll try it out. Does it affect performance, or just in case you need to debug something?

    • @ArnabAnimeshDas
      @ArnabAnimeshDas 29 днів тому +1

      @@AntonPutra startup time will increase by a miniscule amount as it needs to decompress before running. For this use case, using UPX is a good move as it will reducesdownload time.

    • @AntonPutra
      @AntonPutra  29 днів тому +1

      ​@@ArnabAnimeshDas got it. unfortunately, it's hard to measure boot time in Kubernetes because the minimal interval is 1 second, and I want to focus these benchmarks on Kubernetes.

    • @EraYaN
      @EraYaN 29 днів тому +5

      Also the images are already compressed by the container registry and runtime. So double compression is not all that effective in general. Something like the trimming and Native AOT in .NET does help a bunch though. Go already does a fairly okay job.

    • @AntonPutra
      @AntonPutra  29 днів тому

      @@EraYaN 👌

  • @paarma1752
    @paarma1752 29 днів тому +9

    The idle memory usage difference has its reasons. By default dotnet runtime just doesnt release its reserved memory unless there's memory pressure. If you want it to release it more aggressively, you should run it as a desktop workload instead of a server workload (default).

    • @AntonPutra
      @AntonPutra  29 днів тому +2

      noted, memory does not play a significant role in these benchmarks

    • @Sam-gd4xp
      @Sam-gd4xp 29 днів тому +4

      Oooo reasons, reasons, reasons, come one, face it, Go lang with simpler approach without OOP studpidity rulset has shown it can perform. We kewn all a long, that is a case. Face it, Go lang is the new "C#" as new popular language for beginners. Modern C# is just what C++ was in the 80s. Even C# author said, C# is more C++ replacement that Java replacement.

    • @paarma1752
      @paarma1752 28 днів тому

      @@Sam-gd4xp oh, I like golang as well and I've used it alot ❤️ But personally I wouldn't have courage to start developing a large scale enterprise-y system with it. Everything being so simple and imperative means there are more statements you'll have to manage, which means you'll have more state to manage, which means there'll be more chance for bugs. Golang's range requires much more statements, state and ceremony than C#'s Select(...).Where(...).GroupBy(...).Join(...).OrderBy(...)... I know there are some more functional slice utils, but still a lot is missing. C#'s LINQ (with and without EF), expressions and way superior generics is something I personally couldn't develop a large scale system without... But I do love to use golang for more algorithmic stuff and I'm also super interested in how golang's generics and itetators will turn out and improve 😋

    • @keyser456
      @keyser456 28 днів тому +5

      ​@@Sam-gd4xp Don't be a fanboi

    • @ladrillorojo4996
      @ladrillorojo4996 28 днів тому +1

      @@Sam-gd4xp No, C# is so flexible that it can and needs to be optimized for a particular task.

  • @zhh174
    @zhh174 29 днів тому +27

    Use native aot for C#. Memory usage will be way less, and startup time will be very fast

    • @deado7282
      @deado7282 29 днів тому +10

      AOT is not a sensitive default since it limits you in terms of 3rd party packages.

    • @neonmidnight6264
      @neonmidnight6264 28 днів тому

      @@deado7282 it is an ok default if you deploy to piss weak anemic container configurations and then have to scale with replica count and nodes, because go cant optimally do otherwise, instead of scaling up individual container resources, the ecosystem is in a different place now anyway

    • @AntonPutra
      @AntonPutra  28 днів тому +3

      i'll try

    • @ladrillorojo4996
      @ladrillorojo4996 28 днів тому +4

      @@deado7282 Fiber also limits you. That would be far more fair. Not to mention that there's something bad with the C# build, because my projects are way bigger in code but way smaller when built. He did something bad.

    • @dasiths
      @dasiths 27 днів тому +1

      This would be a fair comparison to fiber as it is the fastest option to run aspnetcore.

  • @TweakMDS
    @TweakMDS 29 днів тому +12

    Once again a spectacularly well thought out test. We can say that C# wins a proud silver medal in this head to head :D
    Would you be interested in a fresh comparison of some of the different javascript runtimes, like node.js, deno and bun?

    • @AntonPutra
      @AntonPutra  29 днів тому +3

      thanks! yes but next rust vs go with new updated frameworks and sdks :)

  • @marcwinner567
    @marcwinner567 27 днів тому +1

    Keep the benchmarks coming! Love it!

    • @AntonPutra
      @AntonPutra  24 дні тому +1

      thanks! will do, rust vs go coming in couple of days :)

  • @RobinVeldhuis
    @RobinVeldhuis 13 днів тому +1

    At 8:01 you mention that theres a significant higher latency for C#. It looks worse than it actually is, since the graph doesn't start at zero (unlike the other graphs in this view). The difference is still significant, but being mindful about these things adds clarity for the viewer and potentially saves you from a wrong conclusion in the future :)

  • @TheBerserkFury
    @TheBerserkFury 29 днів тому +2

    Shoutout to the homelab cluster!
    I’ve got my entire homelab setup declarative for GitOps use!

  • @mmacgearailt
    @mmacgearailt 28 днів тому +1

    This is the first test video I've seen of yours and I love how thorough you are, from methodology and tools, to the results. However, as someone who is color deficient, I cannot tell the difference between low-contrast colors easily or at all. For your next test, please use high-contrast colors for all test subjects.

    • @AntonPutra
      @AntonPutra  24 дні тому

      thank you! it's just default colors that Grafana uses for two different subjects, i'll see if i can improve

  • @darkogele
    @darkogele 28 днів тому +5

    I have never seen dotnet to drop requests if is not 95% plus on cpu ram etc this is just weird.

    • @AntonPutra
      @AntonPutra  28 днів тому +1

      i'll add more metrics next time from cadvisor - github.com/google/cadvisor/blob/master/docs/storage/prometheus.md

  • @carlobenedetti2407
    @carlobenedetti2407 15 днів тому +3

    I am curious about the performance of .NET Orleans compared to Go

  • @alberkhan
    @alberkhan 29 днів тому +5

    Can you please create a comparison video between go and PHP Swoole?

  • @amrabdelhady
    @amrabdelhady 29 днів тому +8

    Why some requests start to drop? I see the CPU utilization and memory usage are very far from 100%. Where is the bottle neck coming from?

    • @AntonPutra
      @AntonPutra  29 днів тому +3

      it depends on the implementation of the http server, some prefer to drop others try to process every single request...

    • @hupett
      @hupett 29 днів тому +9

      My thoughts exactly. Something in the setup of both versions are bad, neither go and c# seems to utitlize resources nowhere near 100%, yet they all start failing request. Maybe they can't see the resources they have available or similar and they are throtthling themselves by using less thread/connection/something that they could. Go (fiber) ofc will win anyways, but based on my very similar tests, the difference is only 10-15% in requests per second and this was with net6, not net8 (which can be significantly faster).

    • @metaltyphoon
      @metaltyphoon 29 днів тому +2

      @@hupett his repo has .net 8 not 6

    • @hupett
      @hupett 29 днів тому +3

      ​@@metaltyphoon yes, which means the margin should be even smaller for him compared to what I measured in net6 era, since net8 is faster then net6. My tests were capping cpu, but here we can see both frameworks failing without using the available resources, so something seems off.

    • @viacheslavsamodelkin6944
      @viacheslavsamodelkin6944 29 днів тому

      This is where GC starts to kick in. If we use something like dotnet-monitor for monitoring GC in Prometheus that might show us the real picture

  • @hichambout6731
    @hichambout6731 25 днів тому +2

    can you do C# (.NET) vs. Rust actix web PLEASE!!!!!!!!!!!!!!!!!!!!

    • @AntonPutra
      @AntonPutra  24 дні тому +1

      well, rust actix vs go coming in a couple of days...

    • @hichambout6731
      @hichambout6731 24 дні тому +1

      ​@@AntonPutra "Bet! 🔥 Thanks for the heads up-can’t wait for that Rust Actix vs Go vid. Keep killin’ it! 🙌"

    • @AntonPutra
      @AntonPutra  24 дні тому +1

      @@hichambout6731 thanks :)

  • @IvanRandomDude
    @IvanRandomDude 29 днів тому +44

    .net vs Quarkus. Let's do it. Dotnet bros always mock Java for being slow. Let's see :)

    • @AntonPutra
      @AntonPutra  29 днів тому +18

      ok will do!

    • @phreakadelle
      @phreakadelle 29 днів тому +2

      Do they? At least I am not... ;)

    • @luvincste
      @luvincste 29 днів тому +1

      a reasonable and informed person (and not a fanboy) would know that java is fast

    • @PanosPitsi
      @PanosPitsi 29 днів тому

      @@luvincstethere is a reason android phones come with 16 gb of ram 💀

    • @LordErnie
      @LordErnie 28 днів тому +2

      C# is only faster when you start using different types of objects like structs and ref structs. In a minimal API with all settings set for speed and memory efficiency, you can produce an api with complex business logic that never allocates any heap memory. This is something that is, in practise, done frequently when performance starts to matter. C# will beat Java that way. But there are many things that Java is just faster at. Datastreaming is one of them. Although the dotnet C# team has recently implemented very efficient ways to do so, Java doesn't just use Java under the hood. It interopts with C and C++ libraries when speed is really something that starts to be a problem. And even the most efficient C# code can't beat that. C# as a core language is in most cases faster when all language features are utilized. But most programmers won't go there. And imo as a C# guy, Java is in many common cases just as fast, if not faster. C# wins in most cases due to the simpel fact that it gives you more control over memory. Thats it. But sinse not a lot of devs will use that advantage, Java will be faster. And even if a C# dev optimizes their codebase to limit allocations, the second a Java dev starts using native libraries it's game over. C# as a language is faster due to its nature. Java will, in general, be faster due to it's optimized libraries that don't even have to use Java.

  • @RockTheCage55
    @RockTheCage55 29 днів тому +2

    Excellent test & very thorough....thanks.

  • @IvanRandomDude
    @IvanRandomDude 29 днів тому +11

    I mean, it is gin, one of the slowest go libraries. You used Fiber in the last video.

    • @AntonPutra
      @AntonPutra  29 днів тому +1

      microsoft compared .net with gin, i used fiber in this video - github.com/antonputra/tutorials/blob/main/lessons/202/go-app/main.go#L12

    • @fortuneosho8137
      @fortuneosho8137 28 днів тому

      Gin is not slow…

    • @AntonPutra
      @AntonPutra  28 днів тому +1

      @@fortuneosho8137 I've been using it for benchmarks, it is definitely slower than fiber..

  • @pushthetemple
    @pushthetemple 29 днів тому +9

    maybe try some functional or new language? i suggest elixir and gleam for next video:)

    • @AntonPutra
      @AntonPutra  29 днів тому

      okay, will do. i hope they have up to date aws sdks. :)

  • @Ryudith
    @Ryudith 3 дні тому +1

    Please test elixir phoenixframework compare to golang fiber and rust actix web. Thanks. 😁

  • @lukavranes2492
    @lukavranes2492 28 днів тому +1

    Very informative as always, thanks
    also just a thought, maybe revisit apache vs nginx. mpm_event module for apache with default config sounds pretty strong
    I'd like to see how they would compare now
    keep up the good work

    • @AntonPutra
      @AntonPutra  28 днів тому

      thank you! will do! is mpm_event module enabled by default or i need to turn it on?

  • @mrt2525
    @mrt2525 29 днів тому +2

    I'm sure you didn't make any adjustments to the operating system. .net core doesn't give me any problems until it reaches 50k/sec.

    • @AntonPutra
      @AntonPutra  29 днів тому

      no vanila kubernetes cluster with containerd runtime. 2cpu and 256mb memory - github.com/antonputra/tutorials/blob/main/lessons/202/deploy/cs-app/deployment.yaml#L26-L32
      have you tried it in k8s or just standalone? default file descriptors 1024 could play a role as well

  • @Cuca-hn3md
    @Cuca-hn3md 29 днів тому

    I like this kind of content, you've got one more subscriber! 😊

    • @AntonPutra
      @AntonPutra  24 дні тому +1

      thank you! rust vs go coming in couple of days :)

  • @YordisPrieto
    @YordisPrieto 29 днів тому +9

    😭😭😭I have a dream to see Elixir one day 😭😭😭😭

    • @AntonPutra
      @AntonPutra  29 днів тому +3

      soon, 1 or 2 videous ahead :)

    • @YordisPrieto
      @YordisPrieto 29 днів тому

      ​@@AntonPutra DO IT! I am primarily interested to see as many clients as it gets hehe; like ~2M goal!

    • @AntonPutra
      @AntonPutra  29 днів тому

      @@YordisPrieto ok :)

  • @romankoshchei
    @romankoshchei 6 днів тому +2

    Will you test with Native AOT C# app?

    • @AntonPutra
      @AntonPutra  5 днів тому

      yes, next week. first python then c#aot

  • @pytorche6206
    @pytorche6206 28 днів тому

    I had a look at the source code a and configuration after the last video and I wondered why you used minIO. Thanks for giving the explanation. I did not know it supports (partially) the S3 API. At work, we have an application that uses it but more as a cloud agnostic object storage.
    The use cases here are more realistic than the tech empower benchmarks ones. The none fixed size of the DB pool for DotNet impacts the latency, opening a connection to the DB (especially if TLS was used) is expensive.

    • @AntonPutra
      @AntonPutra  28 днів тому

      thanks! minio can also be used as a replacement for hadoop for some data lake stuff, etc. It uses significantly less disk space while supporting the same replication, but it's harder to scale. If you are on-prem, it's a viable alternative. I agree with the pool size, just the defaults, no more, no less.

  • @IgnacioTaranto
    @IgnacioTaranto 29 днів тому +1

    It seems you didn't read any of the comments from the Go/Java comparison, the Go binary can be further reduced by removing debugging symbols with the linker options `-s -w`.
    You are also using an outdated AWS SDK.

    • @AntonPutra
      @AntonPutra  29 днів тому +1

      it is in this video, and the difference is only 6 MB - ua-cam.com/video/56TUfwejKfo/v-deo.html
      I'll update sdk in the next lesson, but it does not affect performance it's just a wrapper around rest api

  • @kovlabs
    @kovlabs 29 днів тому +3

    Nice work
    Can you do Java vs C# next ?

    • @AntonPutra
      @AntonPutra  29 днів тому +3

      thanks, maybe not next but i'll do it for sure

    • @Tolg
      @Tolg 28 днів тому

      @@AntonPutra Please do! Looking forward to seeing the same test between Java vs C#. Also would be great to use .Net Native AOT.

    • @AntonPutra
      @AntonPutra  24 дні тому +1

      @@Tolg i got PR for aot so i'll be definitely testing it soon.. - github.com/antonputra/tutorials/tree/main/lessons/202/cs-app-aot so i'll be testing

  • @kamurashev
    @kamurashev 29 днів тому +2

    Nice stuff! Thanks

  • @xelesarc1680
    @xelesarc1680 29 днів тому +1

    I like this comparison keep up like this for benchmark maybe with aot make some difference

    • @AntonPutra
      @AntonPutra  28 днів тому

      thanks, I'll try AOT next time

  • @julioleal2143
    @julioleal2143 28 днів тому +1

    Hi there! Nice video, Thanks!!! Would be possible to do the same test, but using Java instead of .NET ? Maybe also Java x .NET as well 🙂🙂

  • @jaans3712
    @jaans3712 29 днів тому +1

    You have found some kind of holy grail of programming content for UA-cam 😄 Very addictive videos -> I subscribed

  • @PouriyaJamshidi
    @PouriyaJamshidi 29 днів тому +1

    Nice video
    You might enjoy using Nim as well. Could be an interesting comparison

  • @davilinkicefire
    @davilinkicefire 29 днів тому +1

    The comparison seem kind of fair, but they're room for improvement, but i think that a good general "default" setup representation.
    But small precision (with a little history):
    It's not dotnet api or dotnet core, it's the aspnetcore framework just like gin/fiber are web framework that you're testing against, they may exist other web framework for .NET, but i agree that is most popular and used one.
    Nowadays it's just .NET (or dotnet) no "Framework", when we say .NET framework, it mean the old .NET Stack that was only working/designed to work on windows (yeah.. yeah...I know about MONO, but that out of the scope for this simple history)
    dotnet core was/is the rewrite of the .NET stack from scratch. Microsoft choose to call it dotnet core, because at first it was only a subset of library (the core part), and apsnet core was also the rewrite from scratch of the web framework stack that only supported a subset of the aspnet MVC api, why they didn't change aspnetcore to aspnet, because it's already exist (they were (as far as i know) 3 Microsoft's web framework: ASPNET, ASPNET WebForm, ASPNET MVC (with 3 version of that framework is recall correctly)). So why did they change .NET core to .NET ? i don't know the real reason, but i have some idea like stopping people to not use the new improve version of .net because in their head .NET framework is the supported version of Microsoft versus .NET Core was not as feature complete and not maintainted as good by microsoft because it's now not part of the automatic windows update.
    Fun fact that most people don't know, but a certain point in time, you were able to start a apsnetcore project using the .NET framework and this was not a hack, it was a valid use case, but today the required version of .NET for aspnercore is too high and .NET framework support was dropped, but switching from aspnetcore using .NET framework to aspnetcore using .NET Core (now know as .NET) was really easy.

    • @AntonPutra
      @AntonPutra  28 днів тому +1

      Thanks for the clarification. I didn't have any experience with .NET, but someone suggested trying it out with Minimal API, so I did. I'm learning a lot from the feedback I get, lol.

  • @maacpiash
    @maacpiash 29 днів тому +2

    Please compare a Bun.js framework (Elisya.js or Hono.js) with Golang or .NET next.

  • @MagicNumberArg
    @MagicNumberArg 26 днів тому

    Hey, great job! One comment I have is: a lot will come down to how good the Amazon S3 and Postgres are optimized, and in DOTNET MS SQL and Azure Blobs will probably be a priority. Could you do a dedicated test for streaming back local file by id (from disk)? That would show how much HTTP connections specifically each app can handle.

    • @AntonPutra
      @AntonPutra  24 дні тому

      Thanks! I was actually thinking about Kafka consumer/producer implementations and maybe a simple ETL pipeline. What do you think?

  • @ErazerPT
    @ErazerPT 29 днів тому +3

    Sounds reasonable as a whole. .Net isn't particularly efficient unless you do a LOT of massaging. Then again, like ThePrimagen usually puts it, do you have more microservices than users? If I'm not doing high performance, I'd probably sacrifice efficiency for "ease of use and support", especially in a MS centric environment. If I am, then "who cares about your experience, fps for life" (old competitive Quake joke, where you'd sacrifice ANYTHING for more fps because max_speed was tied to fps).

  • @jozsab1
    @jozsab1 28 днів тому +2

    I personally would love some exotic test like Rust, c++ ( oatpp, crow.. ), apache compared to GO.

    • @AntonPutra
      @AntonPutra  28 днів тому

      noted!

    • @jozsab1
      @jozsab1 28 днів тому

      @@AntonPutra after i made the comment youtube recomended your rust, node, java ... comparisons. awesome work !

    • @jozsab1
      @jozsab1 25 днів тому

      @@AntonPutra while at it. I see more an more job postings for python django, fast api, flask. I would expect these to perform "bad", but so many people choose them. I wonder if they are good or not

    • @AntonPutra
      @AntonPutra  24 дні тому

      ​@@jozsab1 It's a very reliable and well-tested framework. We've been running Django as the main API gateway at the company where I work for the last few years with no issues at all. However, most of our other microservices are written in Go :)

    • @jozsab1
      @jozsab1 24 дні тому

      @@AntonPutra I'm not a webdev, for me it's just raw numbers vs raw numbers. For you, maybe a topic to explore / make another video

  • @davesaah
    @davesaah 29 днів тому +1

    Can you do a video on how to create these graphs to test apis. Thanks

    • @AntonPutra
      @AntonPutra  28 днів тому

      I have few tutorials that can help
      1. github.com/antonputra/tutorials/tree/main/lessons/135
      2. github.com/antonputra/tutorials/tree/main/lessons/136
      3. github.com/antonputra/tutorials/tree/main/lessons/137

  • @papa_ethan
    @papa_ethan 15 днів тому +1

    Best if you can draw conclusions.

  • @VoroninPavel
    @VoroninPavel 28 днів тому +1

    Which memory usage do you measure? Reserved or Committed? .NET GC eagerly reserves a lot of memory upfront, but does not commit it until necessary. in .net 8 they introduced Dynamic Adaptive GC mode, but it's on by default only for AOT application.
    DOTNET_gcServer=1
    DOTNET_GCDynamicAdaptationMode=1
    Or System.GC.DynamicAdaptationMode

    • @VoroninPavel
      @VoroninPavel 28 днів тому

      Also, C# compiler interns strings by default, AFAIK Go does not, so you give slight advantage to C# in this case.=)

    • @AJax2012
      @AJax2012 28 днів тому

      The repo is in his profile under "Tutorials". It's the most recent commit atm.

    • @AntonPutra
      @AntonPutra  24 дні тому +1

      well the same as kubernetes uses to oomkill my applications :) to be more precises container_memory_working_set_bytes / container_spec_memory_limit_bytes

  • @lczago
    @lczago 27 днів тому

    Do a Go vs PHP please. We know Go is faster, but it would be interesting to see the differences. You can use FrankenPHP or Symfony Flex.

  • @user-oh2mo1jb6x
    @user-oh2mo1jb6x 24 дні тому +1

    Can you compare nodejs to bunjs? Thanks

  • @UnniMana
    @UnniMana 28 днів тому

    Your videos are very interesting ... Keep doing it.
    I have one question.
    Is it possible for you to create videos for gin, fiber and echo frameworks?
    thank you

    • @AntonPutra
      @AntonPutra  24 дні тому +1

      thanks you! i'll see what i can do and when

  • @THE_NE0
    @THE_NE0 29 днів тому +64

    This comparison is not fair, as you didnt compile the minimal api using AOT

    • @bibahbibah5108
      @bibahbibah5108 29 днів тому +10

      still c# have a very good perform, i think it has the best performance for a general us language

    • @AntonPutra
      @AntonPutra  29 днів тому +39

      Well, I used the available documentation that most people would use to compile and build Docker images. I'm pretty sure you can optimize both Go and C# further. But I get your point, and next time I'll test with AOT as well. If you have anything that could help me optimize .NET, please share it, and I'll definitely use it!

    • @AntonPutra
      @AntonPutra  29 днів тому +13

      have you tried rust? :)

    • @bebobauomy1265
      @bebobauomy1265 29 днів тому +5

      @@AntonPutra unless you change the algorithm you uses, there is not a lot of options that can be used to optimize your Go app, you only have the PGO (which also can be used with C#). In C# you just have to compile the program like Go to get a better performance.

    • @THE_NE0
      @THE_NE0 29 днів тому +1

      @@AntonPutra luckily when you create a .NET solution you have the choice of selecting web api with AOT, which is a very good starting point, i strongly recommend you to check it out as it has a huge performance difference and the boot time is reduced, the only downside i would say is the image size.
      I made a POC for my company, it was a stress test of 1000 concurrent users making 1000 requests each and the memory stayed at 30mb with cpu to 1.5%

  • @riendlyf
    @riendlyf 29 днів тому +1

    Can you uncover cloud language winglang? What is your opinion about this approach ?

    • @AntonPutra
      @AntonPutra  29 днів тому

      interesting, looks like they integrate cloud sdks to the standard library.. so it sort of wrapper around all clouds? how well it is supported? I'll take a look...

  • @nanonkay5669
    @nanonkay5669 27 днів тому

    Basically, if you want something that works and easy, go with Java, C#, Node. If you want improved performance and efficiency without too much work, go with Go. If you want the most performance, speed and efficiency you can get, with the downside of complexity, go with C, C++, Rust

    • @AntonPutra
      @AntonPutra  24 дні тому

      Rust is not ready for the cloud, with poorly maintained SDKs, and many of them are just slower than Go implementations. But in theory, Rust should be second after C.

    • @Comeyd
      @Comeyd 24 дні тому

      @@AntonPutrareally? What did you use? That has not been my experience with Rust at all!

    • @AntonPutra
      @AntonPutra  22 дні тому

      @@Comeyd actix with aws sdk and postgres driver + prom client, i'll publish in a day or so including source code

  • @03shyam
    @03shyam 26 днів тому

    Could you do a performance comparison between Rust Actix and Golang GoMicro?
    Thank you.

    • @AntonPutra
      @AntonPutra  24 дні тому

      Well, I just finished testing Rust Actix with Fiber in EKS and will upload in a couple of days. Why GoMicro? Anything special about that framework?

  • @leonperes
    @leonperes 29 днів тому +1

    Would be interesting to know how to setup all this

    • @AntonPutra
      @AntonPutra  28 днів тому +1

      well i have all source code, including terraform, helm charts everything even dashboards in the repo, link in the description - github.com/antonputra/tutorials/tree/main/lessons/202

  • @ladrillorojo4996
    @ladrillorojo4996 28 днів тому +1

    Uh... There's a problem with your C# compilation because i have an API + Blazor + MAUI project which is 107mb. If you are only using one API it shouldn't even be half of this size.

    • @AntonPutra
      @AntonPutra  24 дні тому

      you mean image size, i'll double check for the next release

    • @ladrillorojo4996
      @ladrillorojo4996 22 дні тому

      @@AntonPutra Yep, pretty sure it's including unused packages. C# is very flexible but that means it needs to be tweaked specifically for the task.

    • @AntonPutra
      @AntonPutra  22 дні тому

      @@ladrillorojo4996 ok i'll be preparing another test soon, i'll make sure to spend more time optimizing

    • @ladrillorojo4996
      @ladrillorojo4996 22 дні тому

      @@AntonPutra Hope it goes well, you make really good and nicely structured videos!

  • @faximori
    @faximori 24 дні тому +1

    Please repeat the test in November with .NET 9

    • @AntonPutra
      @AntonPutra  22 дні тому

      will do, i got a lot of feedback how to optimize it as well, haha

  • @0xd3c0d3d
    @0xd3c0d3d 28 днів тому

    I would love to see an experiment like this with Zig someday.

  • @a2zcourse
    @a2zcourse 4 дні тому +1

    can you do Dart vs Js vs python ?

  • @msotho
    @msotho 29 днів тому +13

    Go is solid!

    • @AntonPutra
      @AntonPutra  29 днів тому +3

      it is, with very little optimization, and it's very fast

  • @billn98
    @billn98 26 днів тому

    Really cool benchmark. Can you do Dart Serverpod vs Go Gin too?

    • @AntonPutra
      @AntonPutra  24 дні тому

      Gin? It's kind of slow, and I've already tested it. Maybe Fiber or standard library?

    • @billn98
      @billn98 24 дні тому

      @@AntonPutra because Dart serverpod is new framework, and we wanna see how it compares against popular alternative like Gin. Comparing it with Fiber or std I think is useless, because we already know that they are too fast :).

    • @AntonPutra
      @AntonPutra  24 дні тому

      @@billn98 noted

  • @SandraWantsCoke
    @SandraWantsCoke 2 дні тому

    The colors are too similar on the graph would be my only complaint

    • @AntonPutra
      @AntonPutra  День тому

      Thanks, they are the default colors, but I've changed them in the new videos.

    • @SandraWantsCoke
      @SandraWantsCoke День тому

      @@AntonPutra Yeah, I thought they are. I am partially color blind. I like where you had red and blue in your other videos.

  • @tanmayupadhyay7750
    @tanmayupadhyay7750 12 днів тому +1

    You should have used go std lib no frameworks

    • @AntonPutra
      @AntonPutra  11 днів тому

      true, i'll update results soon

  • @salman2070
    @salman2070 29 днів тому +3

    very interesting

  • @leonardol8158
    @leonardol8158 29 днів тому +6

    But C# is easier to program, right? I checked Go and didn't like it.

    • @AntonPutra
      @AntonPutra  29 днів тому +2

      it depends on your background

    • @nyashachiroro2531
      @nyashachiroro2531 29 днів тому +4

      In what world is C# easier than Go? Go is literally one of the easiest languages out there

    • @meuscc
      @meuscc 29 днів тому +1

      csharp surely simpler, I write it without learning it, golang costs me 1 day or more

    • @antoniusivan8767
      @antoniusivan8767 29 днів тому +3

      the documentation of microsoft really helps. Golang documentation will destroy your Family Time XD

    • @AntonPutra
      @AntonPutra  28 днів тому

      @@meuscc 😅

  • @antoniusivan8767
    @antoniusivan8767 29 днів тому +11

    C# view engine 10 years ahead of Golang. And for enterprise, consistent changing of go framework sure is a headache

    • @TehGM
      @TehGM 29 днів тому +5

      Yeah. I think it's no surprise that Golang is faster - but .NET is well established and really powerful. And in real use case, it's still REALLY fast.
      Performance should only be the deciding factor when you REALLY need it. Majority of projects don't. In most cases, there's more to it - from ecosystem to team/personal experience and preference.

    • @Sam-gd4xp
      @Sam-gd4xp 29 днів тому +1

      @@TehGM Not really! PRoblem is that developers are mad, that simpler idea like Go lang flies better that begemut C# with .Net

    • @TehGM
      @TehGM 29 днів тому +6

      @@Sam-gd4xp You're either trolling or you simply never comprehended the idea of "different tools for different jobs".
      I've never seen anyone mad that Golang is faster. Everyone knows it, everyone accepts it, and people happily pick it when they need it. Both languages are tools, and only immatures do these kind of "performance wars" and call each other mad over it.

    • @antoniusivan8767
      @antoniusivan8767 27 днів тому

      @@TehGM if you're the head of small startup and small firm, and you learn basic accounting and project management properly, you will see.
      That's why Google push so hard for kotlin multiplatform bro. But will it come? After so much Java VS kotlin legal battle

    • @olexandr.v
      @olexandr.v 27 днів тому +1

      Go is known for it's backwards compatibility, i'm not sure what do you mean here

  • @wudewang9947
    @wudewang9947 22 дні тому

    In test 1, in C# , the json serialization can a improve by setting the context

    • @AntonPutra
      @AntonPutra  22 дні тому

      noted! i'll try next time when i prepare a test with c#

  • @duongphuhiep
    @duongphuhiep 10 днів тому +1

    you should remove the word "(Java)" in the video title. There is nothing to do with Java in this Video

    • @AntonPutra
      @AntonPutra  10 днів тому +1

      thanks, i updated title yesterday i meant C#

  • @xelgoset70
    @xelgoset70 28 днів тому

    Is it fair to compare a web framework specifically designed for maximum performance with many limitations and unimplemented web features to a standard enterprise application framework that has everything you need?
    At least this doesn't exactly match the title of the video.

    • @suyulmaz4
      @suyulmaz4 26 днів тому

      Hi, which libraries are missing at go side for enterprise application needs, can you give some samples if possible please.

    • @AntonPutra
      @AntonPutra  24 дні тому

      Well, internally most of the microservices we have are written in Go, some in Python, and data pipelines in Scala, Java, etc.

  • @MrLOPIU22
    @MrLOPIU22 29 днів тому +1

    great video

  • @CPiet-t4h
    @CPiet-t4h 29 днів тому +1

    can you do go (fiber) vs rust (actix)

  • @mikemoore667
    @mikemoore667 29 днів тому +4

    python fastapi/django please :)

    • @AntonPutra
      @AntonPutra  29 днів тому +2

      sure will do!

    • @mikemoore667
      @mikemoore667 29 днів тому +1

      @@AntonPutra
      Apologies, let me clarify. Would it be possible to conduct a test that includes django-ninja, Django REST Framework, fastApi and a Golang service?
      Just a reminder: people, please don't take these tests too seriously. Even if Python turns out to be five times slower, it's often better to use languages with faster development times. In 80% of cases, development speed is more important than performance.

    • @JosephMcMurray1984
      @JosephMcMurray1984 29 днів тому

      @@mikemoore667 Agreed but Golang is pretty easy to program in.

    • @AntonPutra
      @AntonPutra  29 днів тому

      @@mikemoore667 agreed. i like using Python as well, you can quickly create poc. a few years ago, someone in our company used django to create a poc for the main api gateway, and we're still using it 5 years later. :) no one wants to rewrite it in go cause it just works

  • @guoard
    @guoard 29 днів тому +2

    Perfect

  • @akknaodinden
    @akknaodinden 28 днів тому +2

    Автор плодит холивары. Почему-то он взял AspNetCore старой версии, не запублишил(то есть нет компайла в AOT нейтив), без тримминга без ничего и сравнивает производительность с Go(который по умолчанию AOT), ближайшим аналогом которого для тестирования подобных задач больше подошел бы Blazor из мира Dotnet.

    • @VoroninPavel
      @VoroninPavel 28 днів тому +2

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

    • @VoroninPavel
      @VoroninPavel 28 днів тому +1

      Интересно другое: (из доков)
      When multiple containerized apps are running on one machine, Workstation GC might be more performant than Server GC

    • @akknaodinden
      @akknaodinden 28 днів тому

      @@VoroninPavel У меня фобия что после PGO что-то отпадёт.

    • @VoroninPavel
      @VoroninPavel 28 днів тому

      @@akknaodinden ну это только если там бага какая суровая.
      Еще интересно бы посмотреть на тест не с CreateBuilder, а CreateSlimBuilder()

    • @VoroninPavel
      @VoroninPavel 28 днів тому

      @@akknaodinden странно. Ютьюб как-то через раз ответы отправляет.
      Писал, что интересно еще сравнить производительность, когда не CreateBuilder, а CreateSlimBuilder

  • @calvinnel3954
    @calvinnel3954 12 днів тому +1

    please redo with go std lib

    • @AntonPutra
      @AntonPutra  12 днів тому

      yes soon! i got a lot of tips/PRs to improve Java

  • @valerikehayov2393
    @valerikehayov2393 29 днів тому

    Awesome as always thank you.
    What do you think of including database traces?
    I guess for this you will need a little bit complex database queries.
    Maybe you can include some database triggers to achieve that.
    There is not so much info about database tracing 😢

    • @AntonPutra
      @AntonPutra  29 днів тому

      well i have golang tracing tutorial on my chanel with open telemetry and grafana - ua-cam.com/video/ZIN7H00ulQw/v-deo.html
      but it does not help to measure performance, rather then just help to debug

  • @ucretsiztakipci6612
    @ucretsiztakipci6612 28 днів тому

    Is C# code built with configuration of Release or Debug mode. I can not see that.

    • @AntonPutra
      @AntonPutra  24 дні тому

      release, i also got AOT verion will be testing soon

  • @hello_world_zz
    @hello_world_zz 25 днів тому

    spasibo comrad

  • @PanicAtProduction
    @PanicAtProduction 29 днів тому +1

    Good job

  • @anhcoder
    @anhcoder 13 днів тому

    11 years with .NET at my main jobs (I'm a solution architect), 6 years with Golang (side projects for other clients' companies). I think .NET is more suitable for fast development, quick adaptation to changes, and Enterprise-focused products. Golang is better for cost-efficient projects, but requires more maintenance.

  • @majesticonyx
    @majesticonyx 29 днів тому +1

    Can you do rust vs. go?

  • @rajivkumar-ub6uj
    @rajivkumar-ub6uj 29 днів тому +5

    Hi Anton - waiting for monitoring setup in compose config from you :)

  • @sulaimantriarjo8097
    @sulaimantriarjo8097 29 днів тому

    is there any explaining why C# tends to failing when request is high?

    • @RaZziaN1
      @RaZziaN1 29 днів тому

      could be default seetings, max thread pool, threads starvation, db connections, pretty much some default configuration issue ?!? pretty much anything

    • @AntonPutra
      @AntonPutra  28 днів тому

      I'm curious too and am trying to add more metrics for the next tests, maybe even open file descriptors, etc. - github.com/google/cadvisor/blob/master/docs/storage/prometheus.md

    • @AntonPutra
      @AntonPutra  28 днів тому

      adding more metrics for the next tests...

  • @tariqosman5811
    @tariqosman5811 26 днів тому

    Put the results first, then proceed with the expansion

    • @AntonPutra
      @AntonPutra  24 дні тому

      I always put timestamps in the description, so you can easily click on the test results.

  • @markhenderson5283
    @markhenderson5283 29 днів тому +4

    It's really not surprising that go would be faster and use less memory than .Net which has a big runtime. Enterprises use .Net over things like golang to cut development time.
    Two things I'd like to see .Net AOT vs .Net (no AOT) and .Net (AOT and not) vs Java.
    Also with AOT it should be possible to use something like an alpine linux image with no .net runtime installed.

    • @Sam-gd4xp
      @Sam-gd4xp 29 днів тому

      AOT will not help you with performance. LOL And that is quite optimisation, so Go lang can also use more optimisation switches. And.... Go lang would be faster ;) Well we all knew that C# is fazing out, OOP and Functional rulset is to much of a heavy load that is slowing down .Net execution. It is becoming relic of the past. Did you knew that C# is trying to solve boiler plate coding. And because of that, language has over 100 reserved language words and compiler and compiler tokenizer needs to work hard and be compicated. Java and Go lang use around 50 reserved language keywords and have more solid priciples that .Net (C#). Sometimes C# can solve simple value addresing in 5 to 10 syntactical ways. Java and Go lang only in 2 to 3 syntactical ways, which is enough.

    • @MaximT
      @MaximT 28 днів тому +1

      @@Sam-gd4xp but Rust is much faster than go. C# is by other more fair tests is very close to go

    • @AntonPutra
      @AntonPutra  28 днів тому +1

      I'll definitely test AOT, and if it makes sense I'll make a video

    • @markhenderson5283
      @markhenderson5283 15 днів тому

      @@AntonPutra I'd watch it if you did make that video. It would be very interesting to see how much overhead or not is removed by compiling the whole app ahead of time and eliminating the runtime. Java has jaotc but I don't know if it ever left the experimental phase. Android has had ART for several years, which is also an ahead of time compiler. AOT must do something significant given where it is used today.

  • @ajiics3469
    @ajiics3469 28 днів тому +1

    Please test drogon framework 🙏

    • @AntonPutra
      @AntonPutra  28 днів тому +1

      this one? drogon.org/

    • @suyulmaz4
      @suyulmaz4 26 днів тому

      @@AntonPutra it would ne interesting to see a c++ web framework and go comparison.

    • @AntonPutra
      @AntonPutra  24 дні тому

      ​@@suyulmaz4 Sure, any specific C++ framework in mind? Also, would you add any new test scenarios?

  • @nightmarenova6748
    @nightmarenova6748 28 днів тому

    What specs do each of the nodes have and the controllers ?

    • @AntonPutra
      @AntonPutra  24 дні тому +1

      4 CPUs and 8 GB of memory. From now on, I'm only testing apps in production-ready EKS clusters to make it similar to what we actually run in production environments. I use m6a.2xlarge EC2 instances for the nodes...

  • @JaiminBrahmbhatt
    @JaiminBrahmbhatt 28 днів тому +1

    Rust vs go next please

  • @salman2070
    @salman2070 29 днів тому +3

    Is there a Node vs C# comparison ?

    • @AntonPutra
      @AntonPutra  29 днів тому +2

      Not yet, but I'll make one soon. :) I do have other Node.js benchmarks, though in that playlist.

    • @salman2070
      @salman2070 29 днів тому +1

      @@AntonPutra thanks, I've checked your playlist. Keep it up

    • @AntonPutra
      @AntonPutra  29 днів тому

      @@salman2070 🫡

  • @everyhandletaken
    @everyhandletaken 29 днів тому +5

    C# users are now in mourning.

    • @AntonPutra
      @AntonPutra  29 днів тому +3

      i'll try to use AOT next time. I hope they're not too mad at me :)

    • @metaltyphoon
      @metaltyphoon 29 днів тому +3

      @@AntonPutra well, you are using fiber. You know just mentioning that in the golang subreddit will get you killed 😂

    • @alhriclacle5486
      @alhriclacle5486 29 днів тому

      I use c# for enterprise development and golang for my own project or prototypes for obvious reasons:D

    • @AntonPutra
      @AntonPutra  28 днів тому

      @@metaltyphoon 😅

  • @tamhuynhthanh874
    @tamhuynhthanh874 24 дні тому

    Compare Rust vs Go

    • @AntonPutra
      @AntonPutra  24 дні тому

      i just finished testing. this time, i deployed both apps in eks to be closer to production environments. the results will be in a couple of days...

  • @marcodev3375
    @marcodev3375 29 днів тому

    Which ptogramming language can make me rich faster?

  • @amanberkinbaev2777
    @amanberkinbaev2777 28 днів тому

    do fasthhtp vs just.js please

  • @ivanpavlovnorth
    @ivanpavlovnorth 29 днів тому +6

    Sorry, but your tests are still far from being a real application, even considering "Test 2". The test apps do not have business logic and even simple logging (not to say structural), which can reduce performance several times.
    Also, configurations in the .NET app are not "real", as well as working with the database and AWS services. Usually, it would be services registered in the DI container and used in other services or directly in controllers or methods from minimal API.
    If for some reason you drastically need the lowest startup time, you need to use Native AOT compilation for .NET apps.

    • @AntonPutra
      @AntonPutra  29 днів тому

      i try to keep it as simple as possible, i'll include simple etl or just kafka consumer/producer in the following benchmarks, but thanks for the feedback!

    • @JoeRomano-s8g
      @JoeRomano-s8g 29 днів тому

      ​@@AntonPutra stop doing nonsense benchmark comparison

    • @AntonPutra
      @AntonPutra  29 днів тому

      @@JoeRomano-s8g i'll make some more, maybe evolve it to something else, we'll see :)

    • @Sam-gd4xp
      @Sam-gd4xp 29 днів тому

      Don't be pisst off because you bet with your knowledge on .Net. We knew all a long that .Net was a scam. Even Google knew it! Why would Google bet all backend code to Go lang? It oop was really good and far a head as oop programers are saying, then Goolge would have bought Java and not pass it to Oracle for expensive licencing :D

  • @emilianovazquez1816
    @emilianovazquez1816 29 днів тому +6

    Golang Wins! flawless victory

  • @DavidSmith-ef4eh
    @DavidSmith-ef4eh 29 днів тому

    can you do go vs php-swoole?

    • @DavidSmith-ef4eh
      @DavidSmith-ef4eh 29 днів тому

      btw, I know go will win, I assume php-swoole will be worse than this c# version.

    • @AntonPutra
      @AntonPutra  22 дні тому

      thanks, noted! i'll be comparing with php, but I'm not sure which framework to choose yet.

    • @DavidSmith-ef4eh
      @DavidSmith-ef4eh 22 дні тому

      @@AntonPutra youtube is acting weird, don't see my reply. basically hperf, or check awesome-swoole to find popular frameworks. supposedly fomo is the fastest.

  • @bibahbibah5108
    @bibahbibah5108 29 днів тому +3

    still c# have a very good perform, i think it has the best performance for a general us language

    • @AntonPutra
      @AntonPutra  29 днів тому +1

      have you tried rust? :)

    • @bibahbibah5108
      @bibahbibah5108 29 днів тому +2

      @@AntonPutra no i thing but rust and c# are not in the same category
      c# is like java, rust is like go c c ++

    • @JosephMcMurray1984
      @JosephMcMurray1984 29 днів тому

      @@bibahbibah5108 Golang is not like Rust, its a very easy language to learn. Even easier than C#. So if ease of use, development speed are metrics for choosing a backend language between C# and Go, Go wins in my opinion without even considering performance.

    • @1989DP3
      @1989DP3 29 днів тому

      @@bibahbibah5108 go is garbage collected so not really in c, c++, and rust category, but closer to them than c#

    • @AntonPutra
      @AntonPutra  29 днів тому +1

      @@bibahbibah5108 yeah, but you can still use rust to build web apps as well as webassembly..

  • @myyyp1
    @myyyp1 27 днів тому

    По акценту слышно, что где-то должен быть контент на русском

    • @AntonPutra
      @AntonPutra  27 днів тому

      poka netu

    • @myyyp1
      @myyyp1 27 днів тому

      @@AntonPutra kogda budet?))

    • @AntonPutra
      @AntonPutra  24 дні тому

      @@myyyp1 well at some point i guess when i quit :)

    • @myyyp1
      @myyyp1 24 дні тому

      @@AntonPutra Вас заперли?)

    • @AntonPutra
      @AntonPutra  24 дні тому

      @@myyyp1 ne prosto full time job, net vremeni :)

  • @amol_
    @amol_ 27 днів тому

    Go vs scala akka

    • @AntonPutra
      @AntonPutra  24 дні тому

      Is Scala still maintained? I was using it for big data stuff, but then some major projects dropped the scala api :(

    • @amol_
      @amol_ 23 дні тому

      @@AntonPutra Yes, it is still maintain and very popular in product base company and in my company, mostly services is written in scala using AKka Http and stream.
      some services/in house project, is in rust and go like realtime database for metrics is written in rust.

    • @amol_
      @amol_ 23 дні тому

      @@AntonPutra Why i am suggesting for comparison, as go uses green thread and same is like cats effect so battle for performace will going to very close in my understanding.
      for memory comparison will not matter as JVM uses all available memory with time so ignore that.

    • @AntonPutra
      @AntonPutra  22 дні тому

      @@amol_ ok

    • @AntonPutra
      @AntonPutra  22 дні тому

      @@amol_ good to know, thanks

  • @adcodes
    @adcodes 27 днів тому

    All these Microsoft™ fanboys getting UPSET that their dog GOT ABSOLUTELY OWNED by some funky looking mouse. Did you see the RAM usage? OMG!
    Thanks for this video.

    • @AntonPutra
      @AntonPutra  24 дні тому +1

      Well, someone created a PR with an AOT version. I'll be testing that, and if it makes any difference, I'll post the results.

    • @adcodes
      @adcodes 24 дні тому

      @@AntonPutra Looking forward to the result!

  • @dschledermann
    @dschledermann 28 днів тому +1

    I'll pick Go. MikroSoft Java no thanks.

    • @AntonPutra
      @AntonPutra  28 днів тому +1

      yeah, golang is everywhere in the cloud

  • @johnnm3207
    @johnnm3207 29 днів тому +3

    Fellow C# developers AOT won't help. In a real-world use case, you'll use libraries that don't support AOT. Let's take the L for the large binary and slow startup times.
    I AM MORE CONCERNED WITH C# falling off at 1300 Req/s

    • @neonmidnight6264
      @neonmidnight6264 28 днів тому

      @@johnnm3207 likely S3 tooling issue, possibly incorrect DB config (Go impl uses connection pool where .NET seemingly not), on identical code (and in this case it isn’t) .NET tends to have much better throughput than Go. It also has better image size AOT or not if you apply trim, which is now compatible with practically everything.

    • @irwanazamahmad3302
      @irwanazamahmad3302 12 днів тому

      I'm also curious when C# falls at 1330 req/s

  • @diegomaradona336
    @diegomaradona336 29 днів тому +1

    predictable, thanks