With that said, convincing a compiler to elide bounds checks (especially Java's JIT compiler) is a hugely frustrating (and for some algorithms futile) task.
It could be an argument that bounds checks make up a small percentage of total application performance. However, I've profiled production Java servers where >50% of the CPU was encryption/compression. JDK implementations of those algorithms are heavily impacted by (and commonly fail to elide) bounds checks.
Performance matters!
Adding explicit checks does work to a certain degree but it can change with the compiler, and it requires to keep checking the generated assembly - not fun (no unsafe, either but still)
Especially in Java, because "the assembly" can change as the JIT evolves. What is optimized today may not be tomorrow.
>What is optimized today may not be tomorrow.
Exactly. (Also most developers will have exceptionally hard time maintaining such code)
[0]: https://web.archive.org/web/20120328222841/http://cliffc.org...
I should play around this with this using a couple RISC-V cores.
> Performance matters!
https://www.youtube.com/watch?v=r-TLSBdHe1A by Emery Berger
Another, yesbut, encryption and compression are and will handled by on die accelerators.
I don’t doubt that all of those things in the article were true back then, but that was eight years ago. Wow.