Скачать прогнозирующий время - PullRequest
4 голосов
/ 14 января 2009

Существуют ли виджеты для прогнозирования окончания загрузки (или любого другого процесса) на основе истории выполненных процентов?

Тривиальная версия будет просто соответствовать 2 точкам в зависимости от времени начала, текущего времени и выполненного процента, но возможен лучший вариант.

Было бы неплохо использовать GUI-виджет, но класс, который просто возвращает значение, был бы в порядке.

Ответы [ 3 ]

2 голосов
/ 14 января 2009

Для теоретического алгоритма, который я бы попробовал, если бы я написал такой виджет, было бы что-то вроде:

  1. Запишите количество данных, переданных за одну секунду (литерал КиБ / с)
  2. Запомните последние 5 или 10 таких периодов (чтобы получить последние средние значения КиБ / с)
  3. Вычтите общий размер из переданного размера (чтобы получить «оставшиеся байты»)
  4. ???
  5. Виджет!

Это должно сделать это ...

(отсутствующий шаг: оставшиеся кибибайты разделены на среднее значение КиБ / с)

0 голосов
/ 16 января 2009

Это будет иметь тот же эффект, что и некоторые другие предложения, но путем сбора данных о процентах выполненных работ в зависимости от времени статистические методы могут быть использованы для создания линии наилучшего соответствия R ^ 2 и проецирования ее на 100% выполненных работ. Чтобы учесть текущую операцию, на более новые данные можно было бы поместить больший вес (или более старые данные можно было бы утончить), а для игнорирования кратковременных флуктуаций на первую точку данных может быть наложен большой вес *. 1001 *

0 голосов
/ 14 января 2009

Большинство виджетов индикатора выполнения имеют метод update (), который принимает процент выполнения.
Затем они рассчитывают оставшееся время на основе времени с начала и последнего процента. Если у вас есть процесс с длительным временем установки, вы можете захотеть добавить больше функциональности, чтобы он не включал это время, возможно, путем сброса часов прогнозирования при отправке обновления 0%.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...