你如何使用clock()计算出程序的真实世界时间和执行时间?
user2169871
问问题
110 次
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 回答