2017-07-10 11 views
2

"一度に1バイトずつ読むのは、一度に1バイトずつ読み込む方がはるかに速い"
入力ストリームを覚えようとしている間に文thereが見えました。なぜこれが当てはまるのですか?一度に読み込みとバイト配列が1バイト読み込みより速いのはなぜですか?

+1

これは非常に幅広い議論につながります。基本的にチャンクを読むことは、コンピュータアーキテクチャ、エレクトロニクス、そして何が他に何を知っているかによって、1バイトを読むことよりも速くなります。 – Kayaman

+7

どちらが速いですか? 1.本をピックアップし、* 1文字*を読んで、本を置いて、繰り返してください。 2.本を拾い、*文全体を読む*、本を置く、繰り返す。 – QBrute

+0

うわー!完璧な答えをありがとう –

答えて

5

50バイトの配列を取得する方が1バイトを取得するよりも高速です。時間がたつにつれて、1,000,000,000バイトのデータを50個のチャンクで取得する方が、1,000,000,000バイトを1つずつ取得するよりも高速です。

これは、一度に食料品店に行っていないのと同じ理由です。
トリップです。私たちが得る食料品の量ではなく、最も時間がかかります。
(この例では食料品がバイトであり、トリップはメモリからデータを取得しています)

+2

良い例であなたの答えをありがとう:) –

+1

これは入力蒸気の種類に大きく依存していることに言及する価値があります。メモリ内のバイト配列に基づくものは、一度に1バイトであっても非常に高速になります。ファイルに基づくものは、チャンク化の恩恵を受けるでしょう。類推してみると、食料品がどれだけ離れているかによって異なります。だから私たちは一度に食料品をたくさん買うのですが、数分で2番目のボトルが必要な場合でも、冷蔵庫から1本のボトルをつかんでも構いません。 – yshavit

関連する問題