Меня интересует, нужно ли вручную встраивать небольшие методы, которые вызываются 100k - 1 миллион раз в каком-либо алгоритме, чувствительном к производительности.
Во-первых, я думал, что, не встраивая, я несу некоторые накладные расходы, поскольку JVM должна будет определить, нужно ли встроить этот метод (или даже не сделать это).
Однако на днях я заменил этот встроенный вручную код вызовом статических методов и увидел повышение производительности. Как такое возможно? Означает ли это, что накладных расходов на самом деле нет и что включение JVM «по ее желанию» на самом деле повышает производительность? Или это сильно зависит от платформы / архитектуры?
(Примером, в котором произошло повышение производительности, была замена подкачки массива ( int t = a [i]; a [i] = a [j]; a [ j] = t;
) с вызовом статического метода swap (int [] a, int i, int j)
. Другой пример, в котором не было разницы в производительности, - это когда я вставил 10- liner, который был вызван 1000000 раз.)