2

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

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

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

我在核心 i7、6GB DDR3 内存和 ext4 下的 60MB/s 写入磁盘速度。

4

2 回答 2

2

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

于 2011-10-20T22:49:17.407 回答
0

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

  • 您将如何确定要访问的众多文件中的哪一个以获取您所追求的信息?
  • 当您需要追加时,是添加到逻辑上的最后一个文件,还是添加到应该在其中找到信息的任何文件的末尾?
  • 您如何知道在任何给定文件(大或小)中查找信息的位置?
  • 您的 256 3 个文件(如果您使用所有文件,则大约 1600 万个)将需要相当数量的目录存储空间。

您实际上没有提及有关读取文件的任何内容-这很奇怪。

如果您真的对一个或多个文件进行只写访问,那么始终使用O_APPEND(or "a") 打开的单个文件可能是最好的。如果您正在更新(以及附加)信息,那么您会遇到锁定问题(并发访问;谁获胜)。

因此,您没有在问题中包含足够的信息,以便任何人给出任何明确的答案。如果您添加的评论中有足够多的信息,那么您应该将这些评论放入问题中(编辑问题;添加评论材料)。

于 2011-10-21T06:54:25.130 回答