← Back to context

Comment by pjmlp

1 day ago

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.