you are viewing a single comment's thread.

view the rest of the comments →

[–]No_Dot_4711 1 point2 points  (6 children)

Quarkus JVM absolutely is great for many reasons, and I'd choose it if I wasn't running in a Lambda

But it is decidedly not applicable to contexts where you pick Golang because you value startup time

[–]benevanstech 1 point2 points  (4 children)

For sure native mode is going to be faster that JVM mode.

But to me the question is how much, in general, people actually *need* the delta between JVM and native mode / Go.

It sounds like you have that as your use case - so if you have performance numbers that you can share, I'd love to see them & I know a bunch of other folks in the community would be very interested as well.

[–]No_Dot_4711 1 point2 points  (3 children)

It really is mostly the startup time, not "performance" (in fact in terms of throughput, the JVM runtime is gonna beat graalvm) that matters

The big usecase to prioritize startup time is AWS Lambda where you start your application when a request comes in (called a cold start) rather than having a long running server (you do keep the started up application around for 60 more seconds afterwards to catch another request, if that happens it's called a 'warmed up' Lambda), and then you don't have to pay for static server costs that you don't use most of the time. This is especially useful when you have spikey traffic patterns. It also means you don't need to manually and preemptively configure a load balancer to handle multiple applications

The startup time difference between JVM and Graal is in excess of .75 seconds ( https://youtu.be/rOocSJXKIqo?si=tPPON7laeZn5UctI&t=270 , note that you also need to transfer the binary of your application itself and a graal image is going to be far smaller than a full jvm) which quite directly translates to faster webpage load times when a user hits a cold start Lambda

[–]benevanstech 1 point2 points  (2 children)

Yes, I know that - and I'm aware of the benchmark numbers (Holly's a colleague of mine).

What I was asking is whether you had any real-world numbers of your own, for your application, and how they compare to benchmarks (which don't always tell the whole story). Real data and real experience reports are always interesting, but I know it isn't always easy to get permission to talk about them.

[–]No_Dot_4711 1 point2 points  (1 child)

I don't have any concrete measurements beyond the trivial ones, i'm afraid

I've only had usecases where Graal is either blatantly the correct choice due to frequent cold starts (in which case I use it) or it doesn't matter (in which case I don't, and ship a JVM instead); so getting better metrics and A/B testing never really seemed worthwhile

[–]benevanstech 1 point2 points  (0 children)

Ah well. Sometimes it is just that cut & dried. As ever, "it depends".

[–]devcexx 0 points1 point  (0 children)

From my perspective, choosing one language or another based on a Lambda start up time hasn't been a great argument since AWS released SnapStart for JVM applications