我想知道Windows是否使用方程式来确定对文件执行操作(例如删除,复制,擦除或安装)所需的时间。
例如,当我删除文件时,Windows会显示“剩余时间:18秒”,它如何计算此数字,以及使用什么?
timeLeft = random(1,100);
我想知道Windows是否使用方程式来确定对文件执行操作(例如删除,复制,擦除或安装)所需的时间。
例如,当我删除文件时,Windows会显示“剩余时间:18秒”,它如何计算此数字,以及使用什么?
timeLeft = random(1,100);
Answers:
您是否注意到通常它在最初的几秒钟内不会提供任何估计?
这是因为在最初的几秒钟内,它只是执行它必须执行的操作。又过了(小),同时,它知道多少,它已经被复制/删除/等,以及多长时间了。这样可以给您平均的操作速度。
然后,将剩余的字节除以速度,您就有时间来完成操作。
这是小学数学。如果您要行驶360公里,并且在第一分钟结束时行驶了1公里,那么到达目的地需要多少时间?
好吧,速度是1公里/分钟。那是60公里/小时。360公里除以60公里/小时可得出6个小时(或360公里/ 1公里/分钟= 360分钟= 6小时)。由于您已经旅行了一分钟,因此估计剩余时间为5小时59分钟。
用“副本”替换“旅行”,用“字节”替换“ km”,这就是您的问题。
不同的系统具有不同的估算时间的方法。您可能需要花费最后一分钟,估计值可能会发生巨大变化,或者您可能花费了整整时间,并且如果速度实际上发生永久性变化,则您的估计值可能与实际情况相去甚远。我描述的是最简单的方法。
1%
它需要 time so far * rand[0 - 10]
同时显示few seconds left
我认为,以简单的交叉乘法回答绝对是明智的,我相信他已经知道这一点,这也是我们不断猜测大脑中事物的方式。
文件操作进度条的问题在于,它仅适用于统一数据,因此,如果您复制100个大小相同的文件,而驱动器没有执行任何其他操作,则估计的进度将确定,但是如果第一个99个文件是小的txt文件,最后一个是大的视频文件?进度将遥遥无期。
当您不在一个文件夹中而是在多个子文件夹中处理文件时,此问题会进一步加剧。假设您有5个子文件夹,并且要删除它们(在这种情况下大小并不重要),则前4个文件夹仅包含少于10个文件,因此,当操作进入第5个文件夹时,它认为这是关于80%完成,并且繁荣 5th文件夹包含5000个文件,您的进度跳回到1%
WinXP试图通过预先计算文件数量来解决此问题,这意味着当文件夹未在Windows中建立索引时,根据文件数量的不同,XP在开始的20秒内并没有真正启动操作(数),这使每个人都感到愤怒。
因此,尽管我也对Windows的运行方式没有特别的了解(但是除了计数文件和字节之外,还有其他内容),但我希望我能说明为什么它有缺陷,为什么它永远不会完美。
最好的办法是不要仅依赖于文件计数或字节计数,而要取两者的平均值。
或者,如果您想变得更疯狂,则OS可以启动一个数据库,记录过去这些操作在您的计算机上花费了多长时间,并将其纳入等式。
最后的想法:如果有人想到了一个文件系统,该文件系统会让OS知道每个文件夹的大小,而无需先计算它,则在删除整个文件夹而不仅仅是部分文件夹时,至少会得到正确的进度估计。