0

你如何使用clock()计算出程序的真实世界时间和执行时间?

4

2 回答 2

0

如果时钟()是必需的,我无能为力。如果“获取执行时间”部分是您想要的,您可以查看 gcc(gnu 编译器)的分析选项。您将代码链接到专门编译的库,这些库提供分析信息。

于 2013-03-14T13:46:26.463 回答
0

使用clock() 来查找程序的执行时间可能不是一个好主意。

但我可以为您的问题提出一种可能的解决方案。您必须在每个将正在运行的进程发送到等待状态或阻塞状态的 C 语句之前和之后使用 clock() 来测量时间。例如,您的程序可能正在等待子进程终止或阻塞,直到用户输入一些数据。因此,在这种情况下,您的程序没有使用 CPU。所以你必须从程序的总运行时间中扣除这段时间。

int sum,n1,n2;
clock_t t1, t2, t3, t4;
long int x;
double dur1,dur2;

t1 = clock();

printf("\nEnter two numbers:\n");

t2 = clock();

scanf("%d%d",&n1,&n2);

t3 = clock();

sum= n1 + n2;

printf("\nSum is %d\n",sum);

t4 = clock();

dur1 = ( double ) ( t4 - t1 ) / CLOCKS_PER_SEC;

dur2 = ( double ) ( ( t4 - t1 ) - ( t3 - t2 ) ) / CLOCKS_PER_SEC;

printf( "\nThe Total Running time of the proces is %lf\n", dur1 ); 
printf( "\nThe CPU time taken by the proces is %lf\n", dur2 ); 

当然,对于任意大的程序,这个程序只会给出一个粗略的估计。对于小型程序,估计并非全部有用。

于 2013-03-14T16:37:53.000 回答