我开始编写一个应该读取大型二进制文件(几千兆字节)的c ++程序。首先,我的程序只在循环中执行fread()
以读取双精度数组:
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);
我想看看我的程序的吞吐量,但我发现我可以在大约半秒钟内读取2 GB。如果我没有对数据做任何事情,是否存在可能忽略fread()
次调用的编译器优化?
如果有,我怎么能确定我看到我的程序的实际最大吞吐量?
谢谢!