Как dead code elimination работает в JIT и можно ли на неё полагаться?

Senior
201 просмотров
AFK Offer AI

JIT убирает код который никогда не выполняется или результат которого не используется. Например, if (false) {...} уберётся полностью. Это один из бонусов method inlining — после инлайна JIT видит весь контекст и убирает недостижимые ветки. Нельзя полагаться для измерений: в микробенчмарках JIT может убрать весь тестируемый код если результат не используется. Поэтому JMH (Java Microbenchmark Harness) использует Blackhole чтобы потреблять результат.

Следующий вопрос

Как работать с Cassandra из Java — особенности модели данных?