Чтобы дать немного контекста, я измеряю производительность виртуальных машин (ВМ) или системного программного обеспечения в целом и обычно хочу сравнить различные оптимизации для решения проблемы производительности. Производительность измеряется в абсолютном времени выполнения для ряда тестов и, как правило, для ряда конфигураций ВМ, варьирующихся по используемому количеству ядер ЦП, различных параметров тестов и т. Д. Чтобы получить надежные результаты, каждая конфигурация измеряется примерно в 100 раз. Таким образом, я получаю целый ряд измерений для всех видов различных параметров, где я обычно заинтересован в ускорении для всех из них, сравнивая ВМ и ВМ без определенной оптимизации.
В настоящее время я выбираю одну серию измерений. Допустим, измерения для виртуальной машины с оптимизацией и без нее (VM-norm / VM-opt) выполняются в тесте A на 1 ядре.
Поскольку я хочу сравнить результаты различных тестов и количества ядер, я не могу использовать абсолютное время выполнения, но нужно как-то его нормализовать. Таким образом, я объединяю 100 измерений для эталона A на 1 ядре для VM-нормы с соответствующими 100 измерениями VM-opt для расчета отношений VM-opt / VM-norm.
Когда я делаю это, проводя измерения именно в том порядке, в котором я их получил, у меня, очевидно, довольно сильно варьируются мои 100 результирующих отношений VM-opt / VM-norm. Итак, я подумал, хорошо, давайте предположим, что изменения в моих измерениях происходят от недетерминированных эффектов, и те же самые эффекты одинаково вызывают изменение для VM-opt и VM-norm. Итак, наивно, все должно быть в порядке, чтобы отсортировать измерения перед их сопряжением. И, как и ожидалось, это уменьшает вариации курса.
Однако, мои полусознания говорят мне, что это не лучший способ и, возможно, даже не правильный.
Поскольку в конечном итоге меня интересует распределение этих соотношений, чтобы визуализировать их с помощью бин-графиков, коллега предложил использовать декартово произведение вместо объединения отсортированных измерений. Это звучит так, как будто бы лучше объяснить случайный характер двух произвольных измерений, спаренных для сравнения. Но мне все еще интересно, что статистик предложил бы для такой проблемы.
В конце концов, мне действительно интересно построить распределение отношений с R в виде графиков бобов или скрипки. Простые коробочные сюжеты, или просто означает + stddev, расскажи мне слишком мало о том, что происходит. Эти распределения обычно указывают на артефакты, которые возникают в результате сложного взаимодействия на этих сложных компьютерах, и это то, что меня интересует.
Любые указатели на подходы к тому, как работать и как правильно составлять такие соотношения, очень приветствуются.
PS: Это репост, оригинал был размещен на https://stats.stackexchange.com/questions/15947/how-to-normalize-benchmark-results-to-obtain-distribution-of-ratios-correctly