大きなバイナリ ファイル (数ギガバイト) を読み取ることになっている C++ プログラムを書き始めています。まず、私のプログラムfread()
はループ内で double の配列を読み取るだけです。
double *arr = (double*)malloc(sizeof(double) * ARRSIZE);
FILE *fp = fopen(argv[1], "r");
int num_read;
do {
num_read = fread(arr, sizeof(double), ARRSIZE, fp);
} while (num_read > 0);
free(arr);
プログラムのスループットを確認したいのですが、約 0.5 秒で 2 ギガバイトを読み取ることができることがわかりました。fread()
データで何もしていない場合、呼び出しを無視した可能性のあるコンパイラの最適化はありますか?
存在する場合、プログラムの実際の最大スループットが表示されていることを確認するにはどうすればよいですか?
ありがとう!