【发布时间】:2012-09-04 06:50:25
【问题描述】:
可能重复:
What is the fastest way to read a large number of small files into memory?
我有大量的小文本文件(大小为 29 字节),但其中有 1000 多个。
我正在尝试使用 BufferedReader 读取,但考虑到所有文件都存储在本地,它似乎很慢。我们已经尝试使用非常少量的这些文件(等 12 个)并且读取几乎是瞬时的。
有没有更有效的读取方式或者缓冲区的某个地方存在瓶颈?
谢谢!
【问题讨论】:
-
你能压缩所有文件并使用某种 union-fs 风格的虚拟文件系统吗?
-
@Keppil - 但请参阅我的答案以反驳该问题。
-
如果您可以就您的问题向我们提供更多背景信息,也许 SO 方面的天才可以提出可以加快处理速度的替代解决方案。例如,您可以继续追加到同一个文件,而不是生成 1000 多个小文件吗?或者,也许使用一些并发编程技术可以帮助您提高性能?
-
@StephenC:他在链接问题中显示的测试结果似乎相当令人印象深刻,我认为这值得一试。
-
@Keppil - 来自答案“我在 rt.jar 类文件上运行它,提取到硬盘驱动器,这是在 Windows 7 beta x64 下。即 16784 个文件,总共 94,706,637 字节."。这是 5642 字节的平均大小,与 OP 的用例相比,这是巨大的。