Можно ли предотвратить JIT от оптимизации вызовов методов?

Мы создаем инструмент для анализа среднего времени выполнения программ Java Byte Code. Одна часть этого измерения реального времени выполнения. Таким образом, мы возьмем произвольный, предоставленный пользователем метод, который может иметь или не иметь результат, и может иметь или не иметь побочные эффекты (примеры включают в себя Быструю сортировку, факториал, фиктивные вложенные циклы, ...) и выполнить его (используя отражение), измеряя прошедшее время (Независимо от того, правильно ли мы проводим эталонные тесты, это не главное здесь)

В коде бенчмаркинга мы, очевидно, ничего не делаем с результатом (а некоторые методы даже не дают результатов). Таким образом, нет никакой информации о том, что может делать JIT, и мы на самом деле заметили, что иногда кажется, что он оптимизирует весь вызов метода. Поскольку эталонные методы в действительности не используются изолированно, это делает эталон бесполезным.

Как мы можем помешать JIT сделать это? Мы не хотим полностью его отключать, потому что тогда бенчмаркинг уходит на века, и мы хотим сравнить «реальный» результат. время выполнения в любом случае (поэтому мы хотим, чтобы JIT был активнымinside метод).

Я в курсеэтот вопрос но данный сценарий слишком узок; мы не знаем тип результата (если он есть) и поэтому не можем каким-либо образом использовать результат, который JIT не считает бесполезным.

Ответы на вопрос(3)

Ваш ответ на вопрос