如何从文件中读取数字并测量所需的时间?

问题描述 投票:0回答:1

我有一个名为10.text的文本文件,其中包含10个大数字。我想读取这些数字并将它们存储在大小为10的数组中。然后我想打印出这些nmbers以及读取文件所需的时间。

这是我的尝试:

int main(int argc, const char * argv[]) {


int i;
clock_t start, end;
double cpu_time_used;
double TimeOfReadingFile;
FILE *myFile;
int readarr10[10];


start = clock();
myFile=fopen("10.txt" ,"r");


printf("SIZE 10\n");
printf("----------------\n");
for (i = 0; i < 10; i++)
    fscanf(myFile, "%d", &readarr10[i]);
end = clock();


 for (i=0; i<10; i++) {
            printf("%d  ",readarr10[i]);
            printf("\n");
        }
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
TimeOfReadingFile=cpu_time_used*pow(10, 9);
printf("time for reading the 10 file: %f\n",TimeOfReadingFile);

return 0;}

问题是,当我运行它时,我得到所有数字的零和时间为零。这段代码是我正在进行的项目的一部分,如果我做对了,我就无法继续!

c file
1个回答
0
投票

读取10个数字可能低于clock的定义。在我的虚拟机上的BSD系统上,我不得不循环超过1000次以开始查看某些内容。循环1000000次(读取10个整数,重绕文件)我得到(操作或多或少2.5微秒。如果我在循环中包含fopen / fclose,我以24微秒结束。

我认为(但我必须承认我不确定),小FILE *上的倒带只会重置文件指针,但不会再次读取磁盘上的任何扇区。另一方面,读取10个整数(单个磁盘操作)应该在打开和关闭文件后缩短。

所以我的结论是(在我的系统上):

  • 文件访问:或多或少20微秒
  • 解码10整数:小于2微秒。

我有一个不太快的磁盘和运行VirtualBox机器的开销,所以在高速计算机上,时间甚至可能更小。因此,在一次迭代中,end == start就不足为奇了。

© www.soinside.com 2019 - 2024. All rights reserved.