1

OpenCSVを使用しています

(http://opencsv.sourceforge.net/apidocs/au/com/bytecode/opencsv/CSVWriter.html)

xml コンテンツを含むファイルからレポートを作成します。

これには2つの方法があります - >

i) FileOutputStream を使用して書き込みます

FileOutputStream fos = new FileOutputStream(file);
OutputStreamWriter osr= new OutputStreamWriter(fos);
writer = new CSVWriter(osr);

ii) BufferedWriter を使用して書き込む

BufferedWriter out = new BufferedWriter(new FileWriter(file));
writer = new CSVWriter(out);

あるオプションを別のオプションよりも選択することによって、このレポートの執筆のパフォーマンスがどのように影響を受けるか知っている人はいますか?

私の理解では、使用できるストリームを取得する限り、OpenCSV は気にしません。

パフォーマンスのデルタ(差) は、出力ストリームがファイルから作成される前のステップになります。

OutputStreamWriterBufferedWriterの使用によるパフォーマンスへの影響は?

4

1 に答える 1

4

Google Caliperでいくつかのベンチマークを実行した後、 BufferedWriter オプションが最速であるように見えます (ただし、実際には大きな違いはないので、使い慣れたオプションを使用します)。

結果の解釈方法:

  • シナリオはFileOutputStreamWriterオプション i に対応します

  • シナリオはBufferedWriterオプション ii に対応します

  • このFileWriterシナリオは、単純な古い FileWriter を使用する、私が追加したものです。

各ベンチマークは 3 回実行されました: 1000、10,000、および 100,000 行を書き込みます。

テストは Linux Mint、i5-2500k (1.6GHz) CPU、8GB RAM、Oracle JDK7 (SATA グリーン HDD への書き込み) で実行されました。結果は設定によって異なりますが、これは比較目的には適しているはずです。

  rows              benchmark     ms linear runtime
  1000 FileOutputStreamWriter   6.10 =
  1000         BufferedWriter   5.89 =
  1000             FileWriter   5.96 =
 10000 FileOutputStreamWriter  50.55 ==
 10000         BufferedWriter  50.71 ==
 10000             FileWriter  51.64 ==
100000 FileOutputStreamWriter 525.13 =============================
100000         BufferedWriter 505.05 ============================
100000             FileWriter 535.20 ==============================

参考までに、opencsv は、指定Writerした を a でラップしますPrintWriter

于 2012-12-24T13:12:10.330 に答える