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