我正在处理许多千兆字节的文本数据,我想知道是否有办法提高性能.例如,当经历10千兆字节的数据而根本不处理它时,只需逐行迭代,大约需要3分钟.
基本上我有一个包含BufferedReader的dataIterator包装器.我不断调用这个迭代器,它返回下一行.
问题是创建的字符串数量?或者可能是函数调用的数量.我真的不知道如何分析这个应用程序,因为它被编译为jar并用作STAF服务.
任何和所有的想法赞赏?
让我们从基础开始:您的应用程序是I/O绑定的.由于对象分配,内存或CPU限制,您没有遇到性能不佳的问题.由于磁盘访问,您的应用程序运行缓慢.
如果您认为可以改进文件访问,则可能需要使用JNI进行低级编程.如果您自己更有效地处理文件访问,则可以改进文件访问,这需要在较低级别完成.
我不确定使用java.nio是否会为您提供更好的性能,尽管它可以让您在I/O运行时更自由地进行CPU /内存密集型操作.
原因在于,基本上,java.nio使用选择器包装文件读取,让您在读取缓冲区以供使用时得到通知,确实为您提供可能有助于您的性能的异步行为.但是阅读文件本身就是你的瓶颈,并java.nio没有在那个领域给你任何东西.
所以先尝试一下,但我不会把它的希望太高了.