使用 NTFS 压缩的文件是解压到磁盘还是内存中?

Cau*_*ere 15 windows ntfs

NTFS 解压在 Windows 中如何工作?根据微软的说法,NTFS 解压是通过扩展文件然后使用它来完成的。听起来不错,但我的问题是这个过程在技术上是如何发生的。

Windows 是否将压缩文件加载到内存中、在内存中展开并从内存中读取?还是将压缩文件加载到内存中,展开到磁盘或内存中,写入磁盘,然后读取?

我想弄清楚是否可以通过使用 NTFS 压缩来提高计算机的性能。这样,无法处理那么多写入操作的慢速磁盘驱动器或 SSD 将始终只有更少的数据可供写入和读取,而我大部分时间都处于空闲状态的强大处理器可以解压缩文件,从而提高我的存储速度和健康状况.

Ben*_*n N 20

Windows 将文件解压缩到内存中。在磁盘上执行它会完全消除任何速度改进,并会导致大量不必要的磁盘写入。请参阅这篇关于 NTFS 稀疏文件和压缩的 Microsoft 博客文章的结尾:

  1. NTFS 确定正在访问的压缩单元。
  2. 读取压缩单元的整个分配范围。
  3. 如果该单元未压缩,则我们跳到步骤 5。否则,NTFS 将尝试保留(但不分配)将解压后的 CU 写回磁盘所需的空间。如果磁盘上的可用空间不足,则应用程序可能会在读取过程中收到 ERROR_DISK_FULL。
  4. CU 将在内存中解压缩。
  5. 解压缩的字节范围将映射到缓存中并返回给请求应用程序。
  6. ...

当然,如果内存不足,解压过程使用的内存可能会导致其他内存被分页并写入页面文件中的磁盘。幸运的是,只有包含您的程序实际读取的部分的块才会被解压缩;如果您只需要几个字节,NTFS 不必解压缩整个内容。

如果您的 SSD 速度很快,您可能不会从 NTFS 压缩中获得速度提升。可以想象,处理器用于解压缩数据的时间加上磁盘用于读取压缩数据的时间可能会超过 SSD 读取未压缩数据所需的时间。它还取决于您使用的文件的大小。可压缩文件的最小大小范围为 8 KB 到 64 KB,具体取决于您的群集大小。任何小于该大小的文件都不会被压缩,但会添加少量的簿记。

如果您对压缩文件进行大量写入,由于使用的压缩算法 (LZ),您可能会发现速度有很大差异。

进一步阅读:NTFS 压缩如何影响性能?