我开始编写一个应该读取大型二进制文件(几千兆字节)的 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()
如果我没有对数据做任何事情,是否有任何编译器优化可能忽略了调用?
如果有,我如何确定我看到了我的程序的实际最大吞吐量?
谢谢!