gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:49:45 27 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/13473620/

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