Демпфирует изменения скорости загрузки

У меня есть кроссплатформенное приложение C ++, где я загружаю огромный файл Икс.
Во время загрузки я хотел бы показать «текущую» скорость загрузки и приблизительное время.
К сожалению, скорость загрузки скачет повсюду (от 1,5 МБ до 100 КБ), что, в свою очередь, приводит к тому, что расчетное время не очень полезно.

Вместо того, чтобы изобретать велосипед, мне любопытно, есть ли какие-либо лучшие практики, когда речь идет о демпфировании изменений в скорости загрузки или о том, как наилучшим образом выполнить эти вычисления в удобной для пользователя форме.

1

Решение

Вы можете просто усреднить скорость за более длительный период времени, например, 30 секунд или более. Алгоритм очень прост: отслеживать, какой размер файла был когда-то, например, каждую секунду в массиве. Затем вы можете вычислить среднюю скорость за последние 30 секунд, вычтя размер файла по состоянию на 30 секунд назад из текущего размера файла и разделив его на 30 секунд.

Другой популярный метод — придать больший вес новым измерениям. Например, измерения за последние 30 секунд дают вес 1, за предыдущие 30 секунд дан меньший вес (например, 1/2), затем 1/4 и так далее (вероятно, вам следует остановиться на 1/8 или так). Таким образом, старая скорость все еще будет играть определенную роль, но будет быстро забыта, и некоторое затухание все равно будет иметь место.

Вы должны прочитать о Завершая двенадцать месяцев, это должно дать вам некоторые идеи, как это работает.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]