代码之家  ›  专栏  ›  技术社区  ›  Salgar

在Linux上不断增长的文件会有什么代价吗?

  •  0
  • Salgar  · 技术社区  · 16 年前

    这两种情况在速度上有什么明显的区别吗?

    情景1: 我有一个1024字节的文件,每个字节填充0。 我打开文件,用fwrite写1024字节的1s。

    情景2: 我有一个512字节的文件,每个字节填充0。 我打开文件,用fwrite写1024字节的1s。

    显然,我最终得到的是相同的文件,但是调整磁盘上第二个文件的大小会有什么损失吗?

    我正在尝试确定在使用文件之前调整文件大小是否有价值。任何能给我看一些Linux文档的人都可以得到奖励,以证明这一点。

    2 回复  |  直到 16 年前
        1
  •  6
  •   David Rodríguez - dribeas    16 年前

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

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

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

        2
  •  4
  •   Amardeep AC9MF    16 年前

    如果您所说的大小小于最小分配大小(看起来是这样),那么它实际上不会是可测量的差异。

    对于更大的值,它是可测量的吗?可能。

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

    推荐文章