プログラムの入出力のパフォーマンスを向上するには、いくつか方法があります。
- テキスト・ストリームの代わりにバイナリー・ストリームを使用する。バイナリー・ストリームでは、入力または出力時にデータは変更されません。
- open および close のような、低水準の入出力関数を使用します。これらの関数は、fopen および fclose のようなストリーム入出力関数と比べて、より高速で、よりアプリケーションに特定です。低レベルの関数に対してユーザー独自のバッファリングを提供しなければなりません。
- ユーザー独自の入出力バッファリングを行う場合、バッファーをページのサイズである 4K の倍数にする。
- 入力を読み取るときは、一度に 1 つの文字ではなく、行全体を同時に読み取る。
- ファイル全体を処理する必要があることが分かっている場合は、読み取られるデータのサイズを判別し、これを読み取る単一バッファーを割り当て、read を使用してファイル全体をそのバッファーに一度に読み取り、それからバッファー内のデータを処理する。過度のスワッピングが起こるほどファイルが大きくなければ、これでディスク入出力が削減されます。ファイルにアクセスするために mmap 関数を使用することも考えてください。
- scanf および fscanf の代わりに、fgets を使用して文字列内を読み取り、それから atoi、atol、atof、または _atold のいずれかを使用してそれを適切な形式に変換します。
- 複雑なフォーマット設定にのみ sprintf を使用する。ストリングの連結のようなより単純なフォーマット設定では、より特定なストリング関数を使用します。
