Вот мой тест:
Код: Выделить всё
@Benchmark
public void benchmarkPiecewiseDNFModel(Blackhole blackhole) {
// Run the method and consume the output to avoid dead code elimination
PiecewiseCausalModel model = creator.PiecewiseDNFModel(users);
blackhole.consume(model);
}
Код: Выделить всё
Benchmark (users) Mode Cnt Score Error Units
BenchmarkModelCreator.benchmarkPiecewiseDNFModel 650 ss 77.664 s/op
BenchmarkModelCreator.benchmarkPiecewiseDNFModel:gc.alloc.rate 650 ss 809.123 MB/sec
BenchmarkModelCreator.benchmarkPiecewiseDNFModel:gc.alloc.rate.norm 650 ss 65892091888.000 B/op
BenchmarkModelCreator.benchmarkPiecewiseDNFModel:gc.count 650 ss 61.000 counts
BenchmarkModelCreator.benchmarkPiecewiseDNFModel:gc.time 650 ss 332.000 ms
(1) Что именно измеряет профилировщик GC, особенно в gc.alloc.rate. норма? 65 ГБ, о которых сообщается, являются кумулятивным числом, поэтому кажется, что профилировщик GC суммирует распределение памяти непосредственно перед каждым событием сборки мусора >? Это точно? Это средний объем памяти, выделяемый в секунду моей операции?
(2) Как именно определяется операция? > В частности, является ли операция однократным вызовом метода в моем тесте (creator.PiecewiseDNFModel)? Или операция определена более детально для различных частей самой PiecewiseDNFModel?
(3) Не вводит ли в заблуждение использование профилировщика GC для измерить объем памяти, занимаемый фрагментом кода, с учетом метода совокупного измерения? Например, если у меня есть операция, которая занимает много времени, но в данный момент использует только, скажем, 100 МБ, затем профилировщик GC сообщит о большом количестве для gc.alloc.rate.norm, но реальная нагрузка на этот процесс на моей машине очень мала. Казалось бы, более подходящим будет профилировщик, сообщающий о максимальном использовании памяти в любой момент времени. Если это так (я открыт для возражений), то может ли кто-нибудь предложить более подходящий метод профилирования?
Заранее благодарю за разъяснения, которые могут быть предоставлены по этим трем пунктам.< /п>
Подробнее здесь: https://stackoverflow.com/questions/791 ... n-jmh-java
Мобильная версия