我需要阅读&从/到压缩文本文件写入大量的字符串(每个条纹线90个字符长) 准备输入/输出也有耗时的任务,但可以忽略不计(IO时间要大得多(配置文件))
这是我正在使用的代码:
GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(file));
out.write((stringData+NewLineConstant).getBytes());
GZIPInputStream in = new GZIPInputStream(new FileInputStream(file));
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in),8192);
String data = bufferedReader.readLine();
问题需要花费太多时间才能完成。
这也是在用于对数据进行排序的多个文件(合并排序)上完成的。
我能做些什么来显着改善表现? (没有硬件更改)
答案 0 :(得分:2)
您是否有关于这些行中前一个或两个字符分布的任何信息?
如果是这样,你可以一次读取这个大文件,你可以只根据这些行的前一个或两个字符创建一个或两个桶(文件)。之后,如果分布均匀,您可以在内存中对这些存储桶进行排序(这些文件小于1GB)。
详细说明如下:
通常,您应该增加读取缓冲区(从8K到几兆字节)和写入缓冲区(从8K到256K-512K)。