Как бы вы математически моделировали распределение повторяющихся измерений реальной жизни - "Реальная жизнь" означает, что вы не просто зацикливаетесь над рассматриваемым кодом, но это всего лишь короткий фрагмент в большом приложении, запущенном в типичном сценарии пользователя
Мой опыт показывает, что у вас обычно есть пик вокруг среднего времени выполнения, который можно адекватно смоделировать с помощью распределения Гаусса. Кроме того, есть "длинный хвост", содержащий выбросы - часто с кратным среднему времени. (Поведение понятно, учитывая факторы, способствующие первому исполнению наказания).
Моя цель заключается в моделировании совокупных значений, которые разумно отражают это и могут быть рассчитаны из совокупных значений (например, для гаусса, вычисления mu и сигма из N, суммы значений и суммы квадратов), Другими словами, количество повторений неограниченно, но требования к памяти и вычислению должны быть сведены к минимуму.
Нормальное гауссовское распределение не может адекватно моделировать длинный хвост и будет иметь среднюю величину смещения сильно даже при очень небольшом проценте выбросов.
Я ищу идеи, особенно если это было ранее предпринято/проанализировано. Я проверил различные модели дистрибутивов, и я думаю, что смогу что-то придумать, но моя статистика ржавая, и я мог бы получить раздутое решение. О, полное решение, упакованное в термоусадочную пленку, тоже будет прекрасным;)
Другие аспекты/идеи: Иногда вы получаете "два горбатых" дистрибутива, что было бы приемлемо в моем сценарии с одним mu/sigma, охватывающим оба, но в идеале они были бы идентифицированы отдельно.
Экстраполируя это, другой подход будет "вычислением плотности плавающей вероятности", который использует только ограниченный буфер и автоматически настраивается на диапазон (из-за длинного хвоста, бункеры могут не располагаться равномерно) - ничего не нашли, но с некоторыми предположениями о распределении это должно быть возможно в принципе.
Почему (поскольку он был задан) -
Для сложного процесса нам необходимо сделать такие гарантии, как "только 0,1% пробегов превышают лимит в 3 секунды, а среднее время обработки составляет 2,8 секунды". Производительность изолированного фрагмента кода может сильно отличаться от обычной среды времени выполнения, включающей различные уровни доступа к диску и сети, фоновые службы, запланированные события, которые происходят в течение дня и т.д.
Это можно решить тривиально путем накопления всех данных. Однако для накопления этих данных в производстве данные должны быть ограничены. Для анализа отдельных фрагментов кода гауссовское отклонение плюс штраф за первое исполнение в порядке. Это больше не работает для распределений, найденных выше.
[edit] У меня уже есть очень хорошие ответы (и, наконец, может быть - какое-то время для работы над этим). Я начинаю щедрость искать больше информации/идей.