以最快的方式在 csv 中写入 100,000 行



>我正在尝试创建一个 100 csv 的 zip。 我需要以最快的方式在单个 csv 中编写 100,000 行。 我正在使用openCSV,ZipEntry方法写入csv。

使用的一些代码:

ZipEntry zipentry = new ZipEntry(filename);
zos.putNextEntry(entry);
CSVWriter writer = new CsvWriter(new OutputStreamWriter(zos));
writer.writeNext(entries); //entries is single line of csv

目前,编写单个 csv 需要 1.5 秒,而创建完整的 zip 大约需要 120-140 秒。

我已经调试了代码,并观察到代码中的其他计算不需要时间,但写入操作确实需要时间。

我尝试创建 100,000 行的列表,然后一次编写一个文件,而不是直接流式传输。但它仍然需要相同的时间。

请建议最快的方法,花费更少的时间。 ;-(

BufferedOutputStream

大大提高了IO 性能:

请参阅 Javadoc: BufferedOutputStream

通过设置此类输出流,应用程序可以将字节写入基础

输出流,而不必导致对写入的每个字节调用基础系统。

OutputStream out = new BufferedOutputStream(zos, 1<<16);
CSVWriter writer = new CsvWriter(new OutputStreamWriter(out);

尝试对 ZipOutputStream 使用不太激进的压缩级别,例如 3:

公共无效设置级别(int level(

最新更新