HdrHistogram: как контролировать количество сегментов в outputPercentileDistribution()?
Я использую библиотеку HdrPercentile в Java для мониторинга распределения определенного числа в моей системе.
Я решил использовать ярлык и использовать outputPercentileDistribution, чтобы HdrHistogram показывал мне, что он думает о моих данных.
Вывод был полезен, но мне трудно понять, как HdrHistogram контролирует количество блоков, которые он печатает.
Число контролируется аргументом функции
Создать текстовое представление распределения значений данных гистограммы по процентилям. Распределение выводится с экспоненциально возрастающим разрешением, причем каждое экспоненциально уменьшающееся половинное расстояние содержит точки отметки отчета о процентилях dumpTicksPerHalf.
centtileTicksPerHalfDistance Количество точек отчетности за экспоненциально убывающее половинное расстояние
Я не понимаю, как именно это переводится в ведра. Я заметил, что чем больше число, которое я передаю, тем больше я получаю ведер.
Может кто-нибудь объяснить, как именно ведра установлены?
1 ответ
После просмотра исходного кода, я думаю, что я вижу, что там происходит.
Аргумент функции слегка ошибочно назван. Это действительно должно быть percentileBucketsPerHalfDistance
,
Система берет половину расстояния до 100% (первоначально 50%) и разбивает его на заданное количество сегментов. Таким образом, для percentileBucketsPerHalfDistance = 2
мы получаем ведра на 0 и 25%.
Затем система снова берет половину того, что осталось до 100%, скажем, от 50 до 75%, и разбивает ее на требуемое количество сегментов, скажем, 50% и 62,5%.
Затем мы имеем дело с 75% до 87,5%, снова разделив на 2, таким образом, мы получаем 75% и 81,25%
В конце концов мы приближаемся к 100%, поэтому мы переходим и получаем 99.9997138977 и 100.0.