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

Sal*_*gar 0 c++ linux performance disk

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

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

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

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

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

Omr*_*dan 6

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

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

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