gpt4 book ai didi

c++ - 有趣的处理时间结果

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:14 24 4
gpt4 key购买 nike

我制作了一个小型应用程序,可以对 1 到 1000000 之间的数字取平均值。不难看出(使用一个非常基本的代数公式)平均值是 500000.5,但这更像是一个学习 C++ 的项目,而不是其他任何项目.

无论如何,我创建了时钟变量,旨在找到应用程序运行所需的时钟步数。当我第一次运行脚本时,它说它花费了 3770000 个时钟步,但从那以后每次我运行它,它都花费了“0.0”秒......

我在底部附上了我的代码。

要么 a.) 它保存了我第一次运行它时的变量,它只是快速运行到答案......或 b.) 我声明时间变量的方式有问题。

无论如何...这没有意义。

如有任何帮助,我们将不胜感激。

仅供引用(我通过 Linux 计算机运行它,不确定这是否重要)

double avg (int arr[], int beg, int end)
{
int nums = end - beg + 1;

double sum = 0.0;

for(int i = beg; i <= end; i++)
{
sum += arr[i];
}

//for(int p = 0; p < nums*10000; p ++){}

return sum/nums;

}

int main (int argc, char *argv[])
{
int nums = 1000000;//atoi(argv[0]);
int myarray[nums];

double timediff;

//printf("Arg is: %d\n",argv[0]);
printf("Nums is: %d\n",nums);

clock_t begin_time = clock();

for(int i = 0; i < nums; i++)
{
myarray[i] = i+1;
}

double average = avg(myarray, 0, nums - 1);

printf("%f\n",average);

clock_t end_time = clock();

timediff = (double) difftime(end_time, begin_time);

printf("Time to Average: %f\n", timediff);

return 0;

}

最佳答案

您也在测量 I/O 操作 (printf),这取决于外部因素并且可能会影响运行时间。此外,clock() 可能没有测量如此小的任务所需的精确度 - 查看更高分辨率的函数,例如 clock_get_time()。即使这样,其他进程也可能通过产生缺页中断、占用内存BUS等方式影响运行时间。所以这种波动一点也不正常。

关于c++ - 有趣的处理时间结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17662606/

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