gpt4 book ai didi

java - 提高 IO 性能和速度

转载 作者:行者123 更新时间:2023-11-30 09:40:28 25 4
gpt4 key购买 nike

我需要从压缩文本文件中读取和写入大量字符串(每行 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();

需要太多时间才能完成的问题。

这也是对用于对数据进行排序(合并排序)的多个文件完成的。

我可以做些什么来显着提高性能吗? (无需更改硬件)

最佳答案

关于这些行中前一两个字符的分布,您有任何信息吗?

如果是这样,您可以一次读取这个大文件,并且您可以仅根据这些行的前一两个字符创建一两打存储桶(文件)。之后,如果分布均匀,您可以在内存中对这些桶(这些文件将小于 1GB)进行排序。

详细来说应该是这样的:

  • 打开大文件(10GB)
  • 打开数十个存储桶文件进行写入(每种类型 1 个:aa、ab、...)
  • 读取大文件的行,并写入桶文件
  • 关闭大文件
  • 关闭存储桶文件
  • 对内存中的桶文件进行排序(首先是 aa,然后是 ab,...),这可以并行化,然后附加它们

通常,您应该增加读取缓冲区(从 8K 到几兆字节)和写入缓冲区(从 8K 到 256K-512K)。

关于java - 提高 IO 性能和速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9411750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com