2013-07-22 61 views
1

我正在编写一个用C语言编写的程序(而不是OO)代码的服务器程序。每个方法都实现一些特定的功能 为了诊断目的,我想将代码添加到一组方法中,这些方法将计算和打印各个函数的运行时间。 它是在Linux上,我知道如何计算运行时间。计算C函数的运行时间

我的问题是什么将是最好的,最有效的方式来编码?

因为它是用C编写的程序代码我将不得不为所有(约20个)函数添加代码以启动计时器,计时器结束并计算差异。有没有比这更好的方法?

+2

为什么不写一个包含你的时间代码的函数或宏,并用你的函数调用? –

+0

添加程序级别或程序级别?如果是程序,你可以使用时间。如果在程序层面,则调用时间,保留价值,在程序结束后再次调用并记录时间戳。 – Jiminion

+0

@CarlNorum即使然后我必须将这两个函数调用添加到每个函数。但那么这就是我最终可能做的 – punekr12

回答

0

您可能需要使用外部剖析器工具。 gprof是一个众所周知的标准工具。这里是简单的使用示例:

$ gcc -pg a.c -o a 
$ ./a 
$ gprof 

此工具显示每个函数的总运行时间(绝对值和百分比)。

但是,如果您在运行时需要这些信息,这几乎是无用的。

+0

感谢您的信息!但我希望能够使用env变量在运行时打开/关闭它 – punekr12

0
#include<time.h> 
. 
. 
. 
clock_t start, end, total; 
start = clock(); 
. 
. 
. 
end = clock(); 
total = (double) (start - end)/CLOCKS_PER_SEC; 

这会给你执行时间,以秒为单位。你甚至可以把它放入宏中,并将其包装在函数中。