繁体   English   中英

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

[英]Writing 100,000 lines in a csv in fastest way possible

我正在尝试创建 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

By setting up such an output stream, an application can write bytes to the underlying output stream without necessarily causing a call to the underlying system for each byte written.

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

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

公共无效 setLevel(int 级别)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM