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