簡體   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