Супер поучительная история. Чел работал над гигантской кодобазой на Java, заоптимизированной донельзя. Система работала на огромном кол-ве машин, поэтому каждый процентик экономии имел большой смысл. Наш протагонист нашёл пространство для ещё одной оптимизации: маршалинг long'ов в VarInt байты. Героически покоряя JIT и извергая ASM инструкции, он добился 4-х кратного ускорения этой небольшой функции. Раскатывает на прод - 0 эффекта. Копает, в чём дело, и, внезапно, facepalm. Никто особо не маршалит настолько больших чисел, чтобы оптимизация дала эффект. Мораль: не надо бенчмаркать на рандомных данных.
#optimize #java #benchmark
#optimize #java #benchmark
😢12😁3❤1👏1
Чел пилит свой JVM bytecode декомпилятор и решил рассказать, как непросто работать с try-catch блоками.
#java #jvm #exception
#java #jvm #exception
purplesyringa's blog
JVM exceptions are weird: a decompiler perspective
Some time ago, I played around with decompiling Java class files in a more efficient manner than traditional solutions like Vineflower allow. Eventually, I wrote an article on my approach to decompiling control flow, which was a great performance boost for…
👍4❤2🔥1
В докладе объясняют, почему final в Java всё ещё не совсем честное immutability, как рантайму приходится с этим мириться, и какие изменения грядут, чтобы final наконец стал настоящим.
#talk #java #jvm
#talk #java #jvm
YouTube
Finally, final means final A deep dive into field immutability in Java by Per Minborg
Java's main tool for expressing immutability is the keyword 'final'. But did you know that the current JVM must assume some 'final' fields will change, and why this will slow down your application? In this talk, we will take a deep dive into the semantics…
❤2🤝1