[英]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.