Linux上的增长文件是否需要花费任

时间:2010-07-22 14:33:32

标签: c++ linux disk performance

这两种情况之间的速度是否存在明显差异?

场景1: 我有一个大小为1024字节的文件,每个字节都填充0。 我打开文件并用fwrite写入1024字节的1。

场景2: 我有一个大小为512字节的文件,每个字节都填充0。 我打开文件并用fwrite写入1024字节的1。

显然我最终得到了相同的文件,但是在调整磁盘上的第二个文件时是否有任何损失?

我正在尝试确定在使用它们之前调整文件大小是否有任何价值。奖励指向任何能够向我展示一些Linux文档以证明这一点的人。

2 个答案:

答案 0 :(得分:6)

这自然是特定于文件系统的。但是你可以非常肯定增长文件比写入预先分配的文件更昂贵,因为增长它涉及文件系统inode分配,而写入预先分配的inode却没有。

这个差异究竟有多大取决于文件系统,以及您使用它的准确程度。 我想在某些情况下它可能是有意义的。

要考虑的另一个问题是碎片化。如果您的文件位于磁盘上的连续块(​​或几个大块)上,您将获得更好的读/写性能。预分配文件将为您提供更好的机会,使其更少碎片化。

答案 1 :(得分:4)

如果您所谈论的尺寸小于最小分配尺寸(它看起来像),那么它实际上不会是一个可测量的差异。

对于较大的值,它是否可以衡量?可能。

重要吗?您只能通过分析说明它是您的应用程序的瓶颈。