当前位置:  开发笔记 > 编程语言 > 正文

处理大量数据的建议

如何解决《处理大量数据的建议》经验,为你挑选了1个好方法。

所以我有一个"大"的数字数据的"非常大"的ASCII文件(一共几千兆字节),我的程序需要至少按顺序处理整个数据.

有关存储/加载数据的建议吗?我曾想过将文件转换为二进制文件以使它们更小并加快加载速度.

我应该一次性将所有内容加载到内存中吗?
如果没有,是否打开了部分加载数据的好方法?
什么是与Java相关的效率提示?



1> Stu Thompson..:

那么如果处理需要在多个文件和多个缓冲区的数据中跳转呢?二进制文件的不断打开和关闭会变得昂贵吗?

我是'内存映射i/o'的忠实粉丝,又名'直接字节缓冲区'.在Java中,它们被称为 Mapped Byte Buffers是java.nio的一部分.(基本上,这种机制使用操作系统的虚拟内存分页系统来"映射"你的文件,并以编程方式将它们作为字节缓冲区提供.操作系统将自动神奇且非常快速地管理磁盘和内存中的字节.

我建议这种方法,因为a)它适用于我,和b)它将让你专注于你的算法,让JVM,操作系统和硬件处理性能优化.他们经常知道什么是最好的,比我们低级程序员更好.;)

您将如何在您的上下文中使用MBB?只需为每个文件创建一个MBB,然后根据需要阅读它们.您只需要存储结果..

顺便说一句:你用GB处理了多少数据?如果它超过3-4GB,那么在32位计算机上这将不适合您,因为MBB实现是平台架构在可寻址内存空间上的被告.64位计算机和操作系统将带您到1TB或128TB的可映射数据.

如果您正在考虑性能,那么请了解Kirk Pepperdine(一位有点着名的Java性能大师.)他参与了一个网站www.JavaPerformanceTuning.com,它有更多的MBB细节:NIO性能提示和其他Java性能相关的东西.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有