这两种情况之间的速度是否存在明显差异?
场景1: 我有一个大小为1024字节的文件,每个字节都填充0。 我打开文件并用fwrite写入1024字节的1。
场景2: 我有一个大小为512字节的文件,每个字节都填充0。 我打开文件并用fwrite写入1024字节的1。
显然我最终得到了相同的文件,但是在调整磁盘上的第二个文件时是否有任何损失?
我正在尝试确定在使用它们之前调整文件大小是否有任何价值。奖励指向任何能够向我展示一些Linux文档以证明这一点的人。
答案 0 :(得分:6)
这自然是特定于文件系统的。但是你可以非常肯定增长文件比写入预先分配的文件更昂贵,因为增长它涉及文件系统inode分配,而写入预先分配的inode却没有。
这个差异究竟有多大取决于文件系统,以及您使用它的准确程度。 我想在某些情况下它可能是有意义的。
要考虑的另一个问题是碎片化。如果您的文件位于磁盘上的连续块(或几个大块)上,您将获得更好的读/写性能。预分配文件将为您提供更好的机会,使其更少碎片化。
答案 1 :(得分:4)
如果您所谈论的尺寸小于最小分配尺寸(它看起来像),那么它实际上不会是一个可测量的差异。
对于较大的值,它是否可以衡量?可能。
重要吗?您只能通过分析说明它是您的应用程序的瓶颈。