从 PC 复制文件到 USB 闪存盘的速度一开始是 30MB/s 然后下降到 5.8 MB/s,为什么?

从 PC 复制文件到 USB 闪存盘的速度一开始是 30MB/s 然后下降到 5.8 MB/s,为什么?

如果我将一个 8GB 的​​文件从 PC 复制到 USB 闪存盘,其速度一开始大约为 30 MB/s...可能是 28 MB/s,然后逐渐地,一分钟后,它会下降到 15 MB/s,最后稳定在 5.8 MB/s。

但我想,如果它是一个硬盘,那么可能存在 RAM 缓存和内部硬盘缓存,并且会使文件从 PC 复制到硬盘的速度一开始就很快。

但是对于 USB 闪存盘来说,USB 闪存盘本身应该没有内部缓存。它有 RAM 缓存吗,所以初始复制看起来如此之快?

答案1

Windows 会尽可能长时间地缓冲写入,因此第一个块的写入速度会比其余块快。显示屏显示的是总体平均值,因此它最初很高,然后慢慢下降到闪存驱动器的实际写入速度,大概略低于 5.8MB/s。

尽管 Windows 默认不会将此类 USB 驱动器的写入操作长时间保留在缓存中(写入的数据会在一小段时间内刷新到磁盘,或者在文件关闭时立即刷新到磁盘),但它仍会在仍有活动写入操作时缓冲写入操作,而且复制操作可能有自己的缓冲区,因此它会尽可能快地读取,直到缓冲区已满,因此初始速度看起来会比整体速度更快。这也是为什么复制进度显示有时会在长时间写入操作后停留在 100% 一两秒的原因——当复制操作关闭文件时,对“关闭”函数的调用会阻塞,直到最后几个数据块被写入。

可以告诉操作系统执行完全无缓冲的写入操作,但很少有代码这样做(Windows 资源管理器不这样做),因为它妨碍了许多潜在的小优化(在操作系统和驱动器的控制器中),这些优化可以加快写入操作。

答案2

我认为这只是时间计算执行得不好。初始估计主要考虑了从硬盘读取的速度;然后随着更多时间信息的出现而进行调整。

我最喜欢的文件管理器有一个复制插件,它只有在读取和写入某些内容后才会估算时间,并且在这种情况下更加准确(源和目标的速度非常不同)。

相关内容