Рассчитывает ли JMH операции в единицу времени на основе времени ЦП или времени настенных часов?

Учитывая использование JMH по умолчанию, я хотел бы убедиться, на каком типе времени JMH основывает свои измерения: процессорное время или настенные часы.

Я попытался просмотреть официальные образцы JMH (https://openjdk.java.net/projects/code-tools/jmh/), туториалы (в Jenkov, Baeldung, Mykong и других), и мне не удалось точно найти эту информацию (я признаю, что мог пропустить какую-то документацию или общую информацию о бенчмарках) .

Например, в примере 35 (https://hg.openjdk.java.net/code-tools/jmh/file/99d7b73cf1e3/jmh-samples/src/main/java/org/openjdk/jmh/образцы/JMHSample_35_Profilers.java), у нас есть пример вывода:

        Benchmark                              (type)  Mode  Cnt     Score    Error   Units

          JMHSample_35_Profilers.Maps.test     hashmap  avgt    5  1553.201 ±   6.199   ns/op

          JMHSample_35_Profilers.Maps.test     treemap  avgt    5  5177.065 ± 361.278   ns/op

Следовательно, я хотел бы знать, был ли столбец Score рассчитан с использованием времени настенных часов или времени процессора, чтобы я мог точно интерпретировать результаты тестов.


person rfguimaraes    schedule 18.09.2019    source источник
comment
Возможно, вы сможете найти ответ, проверив исходный код jmh по адресу hg. openjdk.java.net/code-tools/jmh/file/99d7b73cf1e3   -  person Alexandre Cartapanis    schedule 21.09.2019


Ответы (1)


Как я и опасался, я пропустил основную информацию и плохо сформулировал свой вопрос, поскольку настенные часы и время процессора - не единственные варианты. Я последовал совету Александра Картапаниса и изучил исходный код JMH. Я узнал, что класс BenchmarkGenerator, производящий тесты, использует System.nanoTime().

Кроме того, согласно System.nanoTime( ) документация и ответ Кевина Буррильона на другой вопрос я пришел к выводу, что JMH по умолчанию измеряет время в соответствии с каким-то произвольным, но фиксированным источником (точно так же, как System.nanoTime()).

person rfguimaraes    schedule 27.09.2019