Windows 如何确定对文件执行给定操作需要多长时间?

Windows 如何确定对文件执行给定操作需要多长时间?

我想知道 Windows 是否使用一个方程式来确定对文件执行操作(例如删除、复制、擦除或安装)需要多长时间。

在此处输入图片描述

例如,当我删除一个文件时,Windows 显示“剩余时间:18 秒”,它是如何计算这个数字的,以及使用什么?

答案1

您是否注意到它通常不会在最初几秒钟内给您任何估价?

这是因为在最初的几秒里,它只是做了它必须做的操作。然后,过了一小会儿,它知道已经复制/删除了多少内容等等, 和花了多长时间。这给了你平均速度的操作。

然后,将剩余的字节除以速度,就得到了完成操作所需的时间。

这是小学数学。如果你要旅行 360 公里,在第一分钟结束时你走了 1 公里,那么你需要花多长时间才能到达目的地?

嗯,速度是 1 公里/分钟。也就是 60 公里/小时。360 公里除以 60 公里/小时等于 6 小时(或 360 公里/1 公里/分钟 = 360 分钟 = 6 小时)。由于您已经行驶了一分钟,因此预计剩余时间为 5 小时 59 分钟。

用“copy”替换“travel”,用“bytes”替换“km”,这就是你的问题。

不同的系统有不同的时间估算方法。您可以采用最后一分钟,估算结果可能会有很大差异,或者您可以采用整个时间,如果速度实际上永久变化,您的估算结果可能与实际情况相差甚远。我描述的是最简单的方法。

答案2

我认为用简单的交叉乘法来回答是非常傲慢的行为,我相信他已经知道这一点,这也是我们在脑海中不断猜测事物的方式。

文件操作进度条的问题在于它只适用于统一数据,因此如果您复制 100 个大小相同的文件,而您的驱动器没有执行任何其他操作,则估计进度将准确无误,但如果前 99 个文件是小型 txt 文件,而最后一个文件是大型视频文件怎么办?进度将偏离很远。

当你处理的不是一个文件夹中的文件,而是多个子文件夹中的文件时,这个问题会进一步加剧。假设你有 5 个子文件夹,你想删除它们(在这种情况下,大小并不重要),前 4 个文件夹只包含不到 10 个文件,所以当操作到达第 5 个文件夹时,它认为已经完成了 80%,然后繁荣第 5 个文件夹包含 5000 个文件,进度跳回到 1%

WinXP 试图通过预先计算文件数量来解决这个问题,这意味着当文件夹未在 Windows 中编入索引时,根据文件的数量,XP 在前 20 秒(计算所花费的时间)内并没有真正启动操作,这让每个人都很生气。

因此,虽然我对 Windows 如何做到这一点并不特别了解(除了计算文件和字节数之外还有什么),但我希望我可以说明为什么它存在缺陷以及为什么它永远不会完美。

最好的做法是不要仅仅依赖文件数或字节数,而是根据两者计算平均值。

或者,如果你想要更加疯狂,操作系统可以启动一个数据库,记录这些操作在你的机器上过去花费了多长时间,并将其纳入公式中。

最后的想法:如果有人能想到一个文件系统,让操作系统知道每个文件夹的大小,而无需先进行计算,那么在删除整个文件夹而不仅仅是部分文件夹时,您至少会得到正确的进度估计。

相关内容