← Back to context

Comment by mihular

1 day ago

But does AOT really help performance wise? It helps with start time, but it probably performs worse after that because of lack of CPU specific optimizations (excluding JIT time).

Yes, just like with C and C++, PGO is the answer, aka training runs.

Also performance for what?

As long production SLA are met, that's a deployment success.

  • Why are SLAs the bar for performance? Every additional second of execution time accumulates in the annual cloud bill, and using too much memory means I need a bigger box.

    For example, the C++ replacement for a Java program bottlenecking my CI takes 1/3rd as long (with less variance) and runs on a smaller instance.

    • Because engineering salaries matter.

      You missed to account the hours spent writing the application in C++, related memory and UB bugs, the additional security issues plugging a language like C++ directly into the Internet.

      Additionally, you also failed to account Java has JNI, which means only a few hot-spots might be rewriten into something like C++, not the whole application.

      Finally, with Panama, it is possible to design a memory layout off heap, similar to what would be done with C++.

      Naturally this requires some low level programming skills, the benefit is that one keeps enjoying the ecosystem.

      Finally, SLAs also include execution time, of course.