Windows如何确定对文件执行给定操作所需的时间?


10

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

在此处输入图片说明

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


1
由于此数字经常是错误的,因此它是根据#个要删除的文件,大小和速度来推测的,删除的时间安排成增加或减少推测的时间。
赛伯纳德2014年

1
@Ramhound怎么知道要花多长时间?所有其他机器(包括运行在SSD,HD上的机器)是否都使用相同的静态变量?如果我有200 GB的内存怎么办?如果我有10 MB RAM怎么办?如何计算动作的“快速”程度?
yuritsuki 2014年

2
@imreallyfamecore好吧,基本的想法是,它可以测量几秒钟的运行速度,并假设其余的过程平均将以相同的速度继续进行。如果平均速度随时间变化,它将调整估算值(导致臭名昭著的“ Windows告诉我,它将在10分钟内被复制,已经2个小时了!”)。不过,这只是一个猜测-操作系统或任何应用程序都无法知道它实际需要多长时间。如果硬盘损坏了怎么办?还是您正在通过网络传输?还是有很多碎片?
a安

6
我知道我会为此受到惩罚,但我无能为力。这不是你的答案。XKCD:估算
KlaymenDK 2014年

10
代码:timeLeft = random(1,100);
MadTux

Answers:


20

您是否注意到通常它在最初的几秒钟内不会提供任何估计?

这是因为在最初的几秒钟内,它只是执行它必须执行的操作。又过了(小),同时,它知道多少,它已经被复制/删除/等,以及多长时间了。这样可以给您平均的操作速度

然后,将剩余的字节除以速度,您就有时间来完成操作。

这是小学数学。如果您要行驶360公里,并且在第一分钟结束时行驶了1公里,那么到达目的地需要多少时间?

好吧,速度是1公里/分钟。那是60公里/小时。360公里除以60公里/小时可得出6个小时(或360公里/ 1公里/分钟= 360分钟= 6小时)。由于您已经旅行了一分钟,因此估计剩余时间为5小时59分钟。

用“副本”替换“旅行”,用“字节”替换“ km”,这就是您的问题。

不同的系统具有不同的估算时间的方法。您可能需要花费最后一分钟,估计值可能会发生巨大变化,或者您可能花费了整整时间,并且如果速度实际上发生永久性变化,则您的估计值可能与实际情况相去甚远。我描述的是最简单的方法。


12
只是为了澄清一下:您是否断言这是Windows的工作方式?或者,您只是在说明一些简单的算法,就可以通过该算法获得答案?
Shredderroy 2014年

10
而最后1%它需要 time so far * rand[0 - 10]同时显示few seconds left
马克

1
如果您有兴趣,这个问题会告诉您Windows(和OSX)如何在知道ux.stackexchange.com/q/23624
理查德(Richard)

1
我并不是说Windows就是这样做的。如果确实如此,那就是巧合。看起来是这样,但这是可以获取答案的方法。在我看来,发帖人想知道这是如何完成的,并以Windows为例。一刀切的所有常数乘以剩余的尺寸(如他所建议的)是完全不可行的,我认为这表明他不知道如何进行这些估算。
Valmiky Arquissandas 2014年

4
@ValmikyArquissandas:Raymond Chen(Microsoft Windows团队的开发人员)在其博客中的帖子中确认了此算法,并解释了为什么可能是错误的。blogs.msdn.com/b/oldnewthing/archive/2004/01/06/47937.aspx
理查德(Richard)

1

我认为,以简单的交叉乘法回答绝对是明智的,我相信他已经知道这一点,这也是我们不断猜测大脑中事物的方式。

文件操作进度条的问题在于,它仅适用于统一数据,因此,如果您复制100个大小相同的文件,而驱动器没有执行任何其他操作,则估计的进度将确定,但是如果第一个99个文件是小的txt文件,最后一个是大的视频文件?进度将遥遥无期。

当您不在一个文件夹中而是在多个子文件夹中处理文件时,此问题会进一步加剧。假设您有5个子文件夹,并且要删除它们(在这种情况下大小并不重要),则前4个文件夹仅包含少于10个文件,因此,当操作进入第5个文件夹时,它认为这是关于80%完成,并且繁荣 5th文件夹包含5000个文件,您的进度跳回到1%

WinXP试图通过预先计算文件数量来解决此问题,这意味着当文件夹未在Windows中建立索引时,根据文件数量的不同,XP在开始的20秒内并没有真正启动操作(数),这使每个人都感到愤怒。

因此,尽管我也对Windows的运行方式没有特别的了解(但是除了计数文件和字节之外,还有其他内容),但我希望我能说明为什么它有缺陷,为什么它永远不会完美。

最好的办法是不要仅依赖于文件计数或字节计数,而要取两者的平均值。

或者,如果您想变得更疯狂,则OS可以启动一个数据库,记录过去这些操作在您的计算机上花费了多长时间,并将其纳入等式。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.