gpt4 book ai didi

algorithm - 如何(准确)估计剩余下载时间?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:12:29 26 4
gpt4 key购买 nike

当然,您可以将剩余的文件大小除以当前的下载速度,但如果您的下载速度波动(而且会波动),这不会产生很好的结果。什么是产生更平滑倒计时的更好算法?

最佳答案

exponential moving average非常适合这个。它提供了一种平滑平均值的方法,以便每次添加新样本时,旧样本对总体平均值的重要性都会降低。它们仍然被考虑在内,但它们的重要性呈指数下降——因此得名。由于它是“移动”平均值,因此您只需保留一个数字。

在测量下载速度的情况下,公式如下所示:

averageSpeed = SMOOTHING_FACTOR * lastSpeed + (1-SMOOTHING_FACTOR) * averageSpeed;

SMOOTHING_FACTOR 是一个介于 0 和 1 之间的数字。这个数字越大,旧样本被丢弃的速度就越快。正如您在公式中看到的,当 SMOOTHING_FACTOR 为 1 时,您只是使用上次观察的值。当 SMOOTHING_FACTOR 为 0 时,averageSpeed 永远不会改变。因此,您需要介于两者之间的值,并且通常需要较低的值才能获得良好的平滑效果。我发现 0.005 为平均下载速度提供了一个非常好的平滑值。

lastSpeed 是上次测量的下载速度。您可以通过大约每秒运行一次计时器来计算自上次运行后下载了多少字节来获取此值。

averageSpeed 显然是您要用来计算估计剩余时间的数字。将其初始化为您获得的第一个 lastSpeed 测量值。

关于algorithm - 如何(准确)估计剩余下载时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com