gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:37:30 25 4
gpt4 key购买 nike

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

这是我的尝试:

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;}

问题是,当我运行它时,我得到所有 thr 数字的零和时间的零。这段代码是我正在开发的一个项目的一部分,如果我不正确,我就无法继续!

最佳答案

读取10个数字可以低于时钟的定义。在虚拟机上的 BSD 系统上,我必须循环 1000 多次才能开始看到某些内容。通过 1000000 次循环(读取 10 个整数,倒带文件),我得到(操作大约需要 2.5 微秒。如果我在循环中包含 fopen/fclose,则在 24 微秒时结束。

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

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

  • 文件访问:大约 20 微秒
  • 解码 10 个整数:或多或少 2 微秒。

我的磁盘速度不太快,而且运行 VirtualBox 机器的开销也很大,因此在高速计算机上,时间甚至可能更短。因此,在一次迭代中 end == start 就不足为奇了。

关于c - 如何从文件中读取数字并测量所需时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47871101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com