在 100mb 的文件中寻找并写入 1mb 与写入整个 100mb 的效率如何?

在 100mb 的文件中寻找并写入 1mb 与写入整个 100mb 的效率如何?

HDD 或 SSD 驱动器在覆盖相同数据(相同字节)时效率如何?我正在尝试确定是否应该搜索文件位置以更新(而不是删除或更改大小)一个位置(更新磁盘上的一个或多个块)或仅从内存内容写入整个文件。也就是说,如果我搜索 1 GB 文件中的某个位置并写入它,然后关闭该文件,整个文件会被覆盖,还是只有我更改的部分会被覆盖?我一直以为只有一个块会更新,而不是整个文件。我很确定我的印象就是答案,但决定再检查一下。

答案1

我认为你问错了问题。

对大文件进行小幅更新是否比重写整个文件更快?是的,绝对是。它在 HDD 上更快,在 SSD 上更快,在 NTFS 上更快,在写时复制文件系统上也更快(Windows 没有这种文件系统)。

您甚至可以更新单个字节,因为这是用于读取和写入文件数据的操作系统 API 所提供的。由于文件系统块大小(又称簇大小)和存储设备块大小,实际更新可能更大。不过,通过仅写入实际需要写入的内容,您可以确保良好的性能。

只有在非常特殊的情况下,重写整个文件才会更快。如果文件很大(比如你给出的 1 GiB 示例),重写所有内容会慢很多。

大多数情况下,引擎盖下发生的事情不应该引起您的关注。

相关内容