Я знаю, что я не единственный, кому не нравятся индикаторы выполнения или оценки времени, которые дают нереальные оценки в программном обеспечении. Лучшими примерами являются установщики, которые прыгают с 0% до 90% за 10 секунд, а затем для завершения последних 10% требуется час.
В большинстве случаев программисты просто оценивают шаги для выполнения задачи, а затем отображают currenttstep / totalalsteps в процентах, игнорируя тот факт, что для выполнения каждого шага может потребоваться другое время. Например, если вы вставляете строки в базу данных, время вставки может увеличиться с количеством вставленных строк (простой пример), или время копирования файлов зависит не только от размера файла, но и от расположения на диск и насколько он фрагментирован.
Сегодня я спросил себя, пытался ли кто-нибудь уже смоделировать это и, возможно, создал библиотеку с настраиваемой надежной оценкой . Я знаю, что трудно дать надежные оценки, потому что их роль играют внешние факторы (сетевое соединение, пользователь запускает другие программы и т. Д.).
Может быть, есть также решение, которое использует профилирование для настройки лучшего оценщика, или можно использовать подходы машинного обучения.
Кто-нибудь знает о передовых решениях этой проблемы?
В связи с этим я нашел статью Переосмысление индикатора выполнения очень интересной. Он показывает, как индикаторы выполнения могут изменить восприятие времени и как вы можете использовать эти выводы для создания индикаторов, которые кажутся быстрее.
EDIT :
Я могу придумать, как вручную настроить оценку времени, и даже с «библиотекой оценки» мне придется настроить алгоритм. Но я думаю, что эту проблему можно решить с помощью статистических инструментов. Конечно, оценщик будет собирать данные во время процесса, чтобы создать более точные оценки для следующих шагов.
Теперь я беру среднее время, затраченное на предыдущий шаг (шаги, сгруппированные по типу и нормализованные, например, по размеру файла, размеру транзакции) и принимаю это среднее значение как оценку для следующих шагов (опять же: подсчет в разные виды и размеры).
Теперь я знаю, есть лучшие статистические инструменты для создания оценщиков, и мне интересно, применял ли кто-нибудь их для решения проблемы.