【发布时间】:2008-09-17 21:08:12
【问题描述】:
所以我有一个“大量”“非常大”的数字数据 ASCII 文件(总共千兆字节),我的程序需要至少按顺序处理整个文件一次。
关于存储/加载数据有什么建议吗?我曾考虑将文件转换为二进制文件以使它们更小并加快加载速度。
我应该一次将所有内容都加载到内存中吗?
如果没有,打开部分加载数据的好方法是什么?
有哪些与 Java 相关的效率提示?
【问题讨论】:
-
@Jake:我编写了一个 Java 应用程序来处理千兆字节的文本文件(ASCII、UTF-8 和 UTF-16{be,le})。 有所作为的原因是:切换到生产者/消费者方案并将负载分散到多个内核上(适应机器)。我们有一个线程在做 I/O,产生要消耗的“块”。然后我们有几个线程并行工作来处理数据。看到在 16 核机器上使用 CPU 监视器工作真是太棒了 :) 所以基本上你必须找到你的限制:你是 I/O 限制还是 CPU 限制?如果您受 CPU 限制,我的建议是并行化。
标签: java loading large-files large-data-volumes