• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ユーザバッファを使用した場合としなかった場合では何が違うのか)

ユーザバッファを使用した場合としなかった場合の消費時間の差とユーザバッファの役割

このQ&Aのポイント
  • ユーザバッファを使用すると、プログラムの消費時間が短縮されることがわかりました。
  • 特にサイズが小さい場合には、ユーザバッファを使用することでより効果的にプログラムの高速化が実現されます。
  • ユーザバッファは、ディスク上のデータとメモリ上のデータを同期させる役割を持ちます。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

fwrite関数は、何も指定しないと一度バッファ(メモリ)に貯めて、バッファが一杯になったらファイルを書き出します。 これは、メモリに比べて低速なハードディスクにアクセスする回数を減らすためにバッファリングしているわけです。 アクセス回数が増えるとどういう問題があるかというと、ハードディスクにアクセスしている間、プログラムは低速な処理が終わるのを待たされることになります。例えばアクセスで10ms待たされるとすると、10バイトx100回で1000バイトを書き出した場合1秒かかります。 これが100バイトx10回だと0.1秒しか必要ありません。 ですので、setvbufでバッファを無効にするとfwriteの毎にファイルを書き出すので小さいサイズほど遅くなります。

noname#61460
質問者

お礼

大変参考になりました。ありがとうございます。

関連するQ&A