を使用して、クラスで 2 台の外付け HDD の帯域幅を測定してきましたgettimeofday
。
驚くべきことに、何度か繰り返した後 (実行ごとに 3 回の測定を 3 回実行)、両方の HDD で 2500MB のファイルを書き込む方が小さいファイルを書き込むよりも高速であることがわかりました。
これが私たちの C コードです。いくつかのチャートを生成するために Python スクリプトから呼び出されます。
//argv[1] = path, argv[2] = size in MB (2500 in this case)
#include <stdio.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#include <fcntl.h>
struct timeval tv0;
struct timeval tv1;
int main(int argc, char *argv[]){
unsigned long size=atoi(argv[2])*1000L*1000L;
int f = open(argv[1], O_CREAT|O_WRONLY|O_TRUNC, 0777);
char * array = malloc(size);
gettimeofday(&tv0, 0); //START TIME
write(f, array, size);
fdatasync(f);
close(f);
gettimeofday(&tv1, 0); // END TIME
double seconds = (((double)tv1.tv_sec*1000000.0 + (double)tv1.tv_usec) - ((double)tv0.tv_sec*1000000.0 + (double)tv0.tv_usec))/1000000.0;
printf("%f",seconds);
}
先生は知りませんでしたので、ここで質問します。これが起こる理由はありますか?