Я хотел бы измерить время выполнения набора модульных тестов, чтобы иметь возможность автоматически отслеживать и сравнивать производительность при внесении изменений. Есть ли подходящие счетчики производительности, которые можно легко получить из самой Java? То есть, что-то вроде:
count1 = <call performance counter func>
executeUnitTest();
count2 = <call performance counter func>
testPerformance = count2 - count1;
с этими дополнительными требованиями:
- дает тот же ответ независимо от нагрузки на систему, даже если средство запуска тестов запущено в виртуальной гостевой ОС (это, кажется, дисквалифицирует nanoTime () и его друзей, или даже время ЦП текущего потока из-за различной нагрузки на хост-машину)
- дает одинаковый ответ независимо от того, на каком оборудовании он запущен (подсчет количества выполненных инструкций байт-кода был бы отличным!)
- в идеале может разделять выполнение GC отсчет от фактического выполнения метода (в случае, если сборщик мусора выполняется в потоке)
задан mikewse 6 August 2011 в 00:12
поделиться