Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 2个文件,内容的一半,而1个文件,内容的两倍,哪个更大?_Memory_File_Size - Fatal编程技术网

Memory 2个文件,内容的一半,而1个文件,内容的两倍,哪个更大?

Memory 2个文件,内容的一半,而1个文件,内容的两倍,哪个更大?,memory,file,size,Memory,File,Size,如果我有两个文件,每个文件都包含以下内容: “你好,世界”(x1000) 这是否占用了比1个文件更多的空间: “你好,世界”(x 2000) 将内容划分为多个较小文件的缺点是什么(假设有理由将内容划分为更多文件,而不是像本例那样) 更新: 我用的是MacBookPro,10.5。但是我也想知道Ubuntu Linux的情况。大多数文件系统使用固定大小的集群(4KB是典型的,但不是通用的)来存储文件。低于此群集大小的文件都将占用相同的最小数量 即使超过这个大小,当您有很多小文件时,比例损耗也会很高

如果我有两个文件,每个文件都包含以下内容:

“你好,世界”(x1000)

这是否占用了比1个文件更多的空间:

“你好,世界”(x 2000)

将内容划分为多个较小文件的缺点是什么(假设有理由将内容划分为更多文件,而不是像本例那样)

更新:


我用的是MacBookPro,10.5。但是我也想知道Ubuntu Linux的情况。

大多数文件系统使用固定大小的集群(4KB是典型的,但不是通用的)来存储文件。低于此群集大小的文件都将占用相同的最小数量

即使超过这个大小,当您有很多小文件时,比例损耗也会很高。忽略大小分布的不均匀性(这会使事情变得更糟),总体浪费大约是集群大小乘以文件数的一半,因此对于给定的数据量,文件越少,存储的效率就越高

另一个需要考虑的问题是元数据操作,特别是文件删除,可能非常昂贵,因此较小的文件也不是您的朋友。ReiserFS在这方面做了一些有趣的工作,直到作者因谋杀妻子而入狱(我不知道该项目的现状)

如果您可以选择,您还可以调整文件大小,使其始终填充整个集群,这样小文件就不会成为问题。但这通常过于挑剔,不值得这么做,而且还有其他成本。对于高容量吞吐量,目前的最佳文件大小是64 MB到256 MB(我认为)


实用建议:除非有充分的理由不这样做,否则请将您的资料保存在数据库中。SQLite大大减少了原因的数量。

大多数文件系统使用固定大小的集群(4KB是典型的,但不是通用的)来存储文件。低于此群集大小的文件都将占用相同的最小数量

即使超过这个大小,当您有很多小文件时,比例损耗也会很高。忽略大小分布的不均匀性(这会使事情变得更糟),总体浪费大约是集群大小乘以文件数的一半,因此对于给定的数据量,文件越少,存储的效率就越高

另一个需要考虑的问题是元数据操作,特别是文件删除,可能非常昂贵,因此较小的文件也不是您的朋友。ReiserFS在这方面做了一些有趣的工作,直到作者因谋杀妻子而入狱(我不知道该项目的现状)

如果您可以选择,您还可以调整文件大小,使其始终填充整个集群,这样小文件就不会成为问题。但这通常过于挑剔,不值得这么做,而且还有其他成本。对于高容量吞吐量,目前的最佳文件大小是64 MB到256 MB(我认为)


实用建议:除非有充分的理由不这样做,否则请将您的资料保存在数据库中。SQLite大大减少了原因的数量。

文件以集群的形式在磁盘上占用空间。集群是由多个扇区组成的,其大小取决于磁盘的格式化方式

集群的典型大小是8KB。这意味着两个较小的文件将分别使用两个集群(16 KB),而较大的文件将使用三个集群(24 KB)


平均而言,一个文件将比其大小多使用半个集群。因此,如果群集大小为8 KB,则每个文件的平均开销为4 KB。

文件以群集的形式在磁盘上占用空间。集群是由多个扇区组成的,其大小取决于磁盘的格式化方式

集群的典型大小是8KB。这意味着两个较小的文件将分别使用两个集群(16 KB),而较大的文件将使用三个集群(24 KB)


平均而言,一个文件将比其大小多使用半个集群。因此,集群大小为8 KB时,每个文件的平均开销为4 KB。

Marcelos给出了一般性能情况。我认为担心这是过早的优化。您应该将内容拆分为不同的文件,在这些文件中拆分它们是合乎逻辑的

另外,如果您真的关心这些重复文件的文件大小,那么您可以压缩它们。 您的示例甚至暗示了这一点,即

“Hello World”x1000


比实际写1000次“hello world”更节省空间

Marcelos给出了一般性能案例。我认为担心这是过早的优化。您应该将内容拆分为不同的文件,在这些文件中拆分它们是合乎逻辑的

另外,如果您真的关心这些重复文件的文件大小,那么您可以压缩它们。 您的示例甚至暗示了这一点,即

“Hello World”x1000

比实际写1000次“hello world”更节省空间

我认为文件的使用应根据API和用于读/写它们的语言(以及最终的API限制)加以考虑。 磁盘碎片(只有大文件时会减少)会影响数据访问,如果您一次读取一个大文件,则会影响数据访问,而对小文件的多次访问间隔时间不会影响碎片。

我认为应该考虑文件的使用,根据API和用于读/写它们的语言(以及最终的API限制)。
磁盘碎片(只有大文件时会减少)将惩罚一次性读取一个大文件的数据访问,而对小文件的多次间隔访问不会惩罚碎片。

大多数文件系统以大于一字节的单位分配空间(目前通常为4KB)