写一个大文件或多个小文件

时间:2011-10-20 22:45:20

标签: c benchmarking subdirectory filewriter

我想知道什么是更好的性能:写入一个大文本文件(大约10GB或更多)或使用一个子文件夹系统将有3个级别,每个文件夹有256个文件夹,最后一级将是文本文件。例如:

1
 1
 2
 3
  1
  2
  3
  4
 4
2
3
4

它将被大量访问(将打开,附加一些文本然后关闭),所以我不知道什么是更好的,一秒钟打开和关闭文件指针一千次,或更改一个大文件内的指针一千次。

我处于核心i7,6GB DDR3内存和ext4下60MB / s写入磁盘速度。

2 个答案:

答案 0 :(得分:2)

你问一个相当通用的问题,所以通用的答案是使用大文件,访问它并让文件系统及其缓存担心优化访问。有可能他们提出了比你刚才做的更先进的算法(没有冒犯)。

答案 1 :(得分:0)

要做出决定,您需要知道许多问题的答案,包括:

  • 您如何确定要访问的信息中包含哪些文件?
  • 当你需要追加时,它是逻辑的最后一个文件,还是应该找到信息的任何文件的末尾?
  • 您如何知道在任何给定文件(大或小)中查找信息的位置?
  • 您的256个 3 文件(如果您使用所有文件,则为1600万左右)将需要相当数量的目录存储。

你实际上没有提到任何关于阅读文件的内容 - 这很奇怪。

如果您实际上只对该文件或文件进行只写访问,则始终使用O_APPEND(或"a")打开的单个文件可能是最佳的。如果您正在更新(以及附加)信息,那么您将陷入锁定问题(并发访问;谁赢了)。

所以,你没有在问题中包含足够的信息,任何人都可以提供任何确定的答案。如果您添加的评论中有足够的信息,那么您应该将这些评论放入问题中(编辑问题;添加评论材料)。