これはクラス プロジェクト用であることを最初に認めておきます。ファイルシステムのブロックサイズを調べるために読み取りを行うことになっています。私の問題は、これを行うのにかかる時間が直線的に増加しているように見え、期待するような手順がないことです.
私は次のように読み取りのタイミングを計っています:
double startTime = getticks();
read = fread(x, 1, toRead, fp);
double endTime = getticks();
getticks は rdtsc 命令を使用します。fread 中に読み取りに時間がかからない原因となっているキャッシング/プリフェッチがあるのではないかと心配しています。プログラムを実行するたびにランダムファイルを作成しようとしましたが、問題が軽減されません。
ディスクからの読み取りにかかった時間を正確に測定する最良の方法は何ですか? ブロック サイズが 4096 であることは確かですが、それをサポートするデータを取得するにはどうすればよいですか?