Как оценить время загрузки, оставаясь (точно)?

Уверенный Вы могли разделить остающийся размер файла на текущую скорость загрузки, но если Ваша скорость загрузки колеблется (и это будет), это не приводит к очень хорошему результату. Что такое лучший алгоритм для создания более гладких обратных отсчетов?

58
задан 16 May 2010 в 01:07

1 ответ

Я нашел ответ Ben Dolman очень полезным, но для кого-то как я, кто не так математика, наклонил его, все еще взял меня приблизительно час, чтобы полностью реализовать это в мой код. Вот более простой способ сказать то же самое в Python, если существуют какие-либо сообщенные мне погрешности, но в моем тестировании его работает очень хорошо:

def exponential_moving_average(data, samples=0, smoothing=0.02):
    '''
    data: an array of all values.
    samples: how many previous data samples are avraged. Set to 0 to average all data points.
    smoothing: a value between 0-1, 1 being a linear average (no falloff).
    '''

    if len(data) == 1:
        return data[0]

    if samples == 0 or samples > len(data):
        samples = len(data)

    average = sum(data[-samples:]) / samples
    last_speed = data[-1]
    return (smoothing * last_speed) + ((1 - smoothing) * average)

input_data = [4.5, 8.21, 8.7, 5.8, 3.8, 2.7, 2.5, 7.1, 9.3, 2.1, 3.1, 9.7, 5.1, 6.1, 9.1, 5.0, 1.6, 6.7, 5.5, 3.2] # this would be a constant stream of download speeds as you go, pre-defined here for illustration

data = []
ema_data = []

for sample in input_data:
    data.append(sample)
    average_value = exponential_moving_average(data)
    ema_data.append(average_value)

# print it out for visualization
for i in range(len(data)):
    print("REAL: ", data[i])
    print("EMA:  ", ema_data[i])
    print("--")
1
ответ дан 1 November 2019 в 13:39

Другие вопросы по тегам:

Похожие вопросы: