假设我有两个删除文件的情况:
- 150,000 个文件,平均大小为 30 KB,总大小为 4 GB
--> 一小时内完成 - 单个文件大小为 8 GB
--> 快速完成
情况 2 中的文件大小比情况 1 中的大,
为什么情况 1 中的删除操作比情况 2 中的删除操作花费的时间更长?
答案1
由于有人要求视觉解释(粗略地说并夸张):
答案2
删除每个文件都包括对目录元数据(即存储文件信息的位置)的更新以及(通常)对可用空间位图的更新。150,000 个文件中的每一个都是对磁盘上所有元数据的一次操作。
删除单个文件,无论大小,都会更改为单个元数据条目。
因此,在第一种情况下,您实际上比第二种情况下多执行了 150,000 次操作。
答案3
案例 1 需要很多很多的目录操作。每个文件都是单独删除的,这需要将其从其所在的目录中删除。
删除 150,000 个文件需要在目录结构中找到每个文件,然后从目录中删除该文件,并在此过程中维护目录结构的组织。
答案4
要删除一个文件,大多数操作系统只会将其目录条目标记为未使用,稍后用另一个文件的目录条目替换(除了将其在磁盘上占用的空间标记为可用)。
它实际上并没有检查文件中的所有数据并将其删除,这就是取消删除实用程序起作用的原因。