9

私はいつもFileWriterJava でファイルにテキストを書き込むために a を使用してきました。どうやら a も使用できるようですBufferedOutputStream。両方の javadoc を注意深く読んだ後、どちらがより高速で効率的であるかはわかりません。

そこで質問します。これら 2 つのファイル I/O メソッドの間にパフォーマンスの違いはありますか (最小限であっても) ? もしそうなら、それらは何で、なぜですか? そうでない場合、なぜそれらは事実上同じなのですか?

どちらかが優先されるシナリオはありますか? 前もって感謝します!

4

2 に答える 2

3

はテキストfilesFileWriter書き込みますが、 は提供する必要がある別のバイナリ ストリームに書き込む前に、任意のバイナリ データのバッファをメモリに保持します。まったく同じことをしているわけではないので、パフォーマンスを比較しても意味がありません。BufferedOutputStream

一般に、バッファリングによりアプリケーションのスループットは向上しますが、レイテンシが追加されます。ファイルの場合、より大きなブロックを一度にディスクに転送できるため、1 秒あたりの出力を増やすことができ、バイトあたりのオーバーヘッドが低くなります。一方、データがメモリにバッファリングされている間はディスクに書き込まれないため、特定のバイトがディスクに書き込まれるまでに時間がかかります。

の場合、FileWriter文字をバイトにエンコードするのに役立つ内部バッファがすでにあります。バッファリングを追加しても、おそらくほとんど価値がありません。

于 2013-07-08T14:20:35.367 に答える