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