2016-08-06 15 views
1

「BufferedInputStream」クラスのバッファサイズがどのようにプログラムごとに決められているのか、最初は気になっていました。 STACKOVERFLOWでは、デフォルトのバッファサイズが8KBであることがわかりました。'BufferedInputStream'のデフォルトバッファサイズ(8KB)の意味? (JAVA)

デフォルトのバッファサイズが「BufferInputStream」クラスの「 」の場合、8KBの大きな意味があるのだろうかと思います。

「BufferedInputStream」クラスに関する情報をJavaドキュメントで検索したとき、 クラスのコンストラクタには2つの形式があることがわかりました。 コンストラクタ・フォームの1つは、ユーザーにバッファ・サイズを変更する機能を提供します。

BufferedInputStreamを(int型のサイズ、中のInputStream)

  1. このクラスのバッファサイズは、いくつかのプログラムのパフォーマンスを決定する上で重要なのだろうか?誰かが上記の形式のコンストラクタを使用してバッファサイズを変更して、自分のプログラムに適合/最適化することができたら、私は不思議です。
  2. デフォルトのバッファサイズに8KBという大きな意味がありますか?

ありがとうございます。

答えて

1

このクラスのバッファサイズは、一部のプログラムのパフォーマンスを決める上で重要なのでしょうか?誰かが上記の形式のコンストラクタを使用してバッファサイズを変更して、自分のプログラムに適合/最適化することができたら、私は不思議です。

おそらくそうではありません。バッファサイズを1から2に変更すると、(システムコールを減らすことによって)パフォーマンスが約2倍になります。 2から4に変更すると、再び2倍になります。再び4から8に変わります。あなたはその考えを得る。パフォーマンスはシステムコールによって支配されなくなり、転送サイズによって支配され始めるため、ある時点ではこれは真実になりません。 8kは止めるのに適しています。あなたが好きならもっと使いましょうが、あなたはあまり違いは感じません。

デフォルトのバッファサイズに8KBという大きな意味がありますか?

ありません。サイズは8kです。デフォルトで。それが意味です。コンストラクタを使用して変更できます。それ以上のことはありません。

+0

8KBに_profoundの意味があります:4KBはNTFSのデフォルトおよび推奨ブロックサイズですが、linuxではデフォルトです。 8KBはその2倍です。効率を上げるためにブロックサイズの倍数を選択するのがよいでしょう。 – destan