JMH, Microbenchmark часть кода
Я хотел бы видеть, есть ли способ сказать JMH, чтобы измерить ТОЛЬКО один конкретный метод с использованием всех методов, вызываемых из микробенчмарка.
Я хотел бы автоматизировать создание микробенчмарков с использованием модульных тестов в качестве базы, поэтому мне не нужно создавать микробенчмарки вручную. В моем исследовании у меня есть большая кодовая база, по которой я делаю некоторые автоматические модификации, ожидая, что они повлияют на производительность. До сих пор у меня есть 1200 мест в коде, который модифицируется. Автоматизация необходима, так как мы хотим предоставить структуру, которая выполняет преобразования, а затем автоматически измеряет влияние преобразований.
Здесь JMH: не принимайте во внимание время внутреннего метода, в котором предоставлено решение, однако я должен был бы вручную отделить код в методе @Start, и это не кажется практичным для 1200 тестовых случаев...
1 ответ
Вы не можете, потому что это не микробенчмаркинг.
Микробенчмаркинг подразумевает измерение характеристик производительности (изолированного) сегмента кода в целом, учитывая точную настройку среды, включая подготовку данных и подачу их в выбранный метод / систему, измерение сквозных метрик. Это было сделано JMH: полезная нагрузка помечена @Benchmark
и измеряется неделимо, с возможностью поэтапного отказа от настройки и демонтажа.
Измерение выбранного метода полезной нагрузки среди других выполняющихся методов полезной нагрузки в лучшем случае сбивало бы с толку: не зная, что еще происходит в системе, эти отдельные метрики ничего вам не говорят. Другими словами, для того, что вам нужно, требуются инструменты профилирования, которые способны анализировать влияние отдельных частей на показатели. Это то, что предназначено для профилировщиков и систем управления производительностью приложений.