我正在编写一个用C语言编写的程序(而不是OO)代码的服务器程序。每个方法都实现一些特定的功能 为了诊断目的,我想将代码添加到一组方法中,这些方法将计算和打印各个函数的运行时间。 它是在Linux上,我知道如何计算运行时间。计算C函数的运行时间
我的问题是什么将是最好的,最有效的方式来编码?
因为它是用C编写的程序代码我将不得不为所有(约20个)函数添加代码以启动计时器,计时器结束并计算差异。有没有比这更好的方法?
我正在编写一个用C语言编写的程序(而不是OO)代码的服务器程序。每个方法都实现一些特定的功能 为了诊断目的,我想将代码添加到一组方法中,这些方法将计算和打印各个函数的运行时间。 它是在Linux上,我知道如何计算运行时间。计算C函数的运行时间
我的问题是什么将是最好的,最有效的方式来编码?
因为它是用C编写的程序代码我将不得不为所有(约20个)函数添加代码以启动计时器,计时器结束并计算差异。有没有比这更好的方法?
您可能需要使用外部剖析器工具。 gprof
是一个众所周知的标准工具。这里是简单的使用示例:
$ gcc -pg a.c -o a
$ ./a
$ gprof
此工具显示每个函数的总运行时间(绝对值和百分比)。
但是,如果您在运行时需要这些信息,这几乎是无用的。
感谢您的信息!但我希望能够使用env变量在运行时打开/关闭它 – punekr12
#include<time.h>
.
.
.
clock_t start, end, total;
start = clock();
.
.
.
end = clock();
total = (double) (start - end)/CLOCKS_PER_SEC;
这会给你执行时间,以秒为单位。你甚至可以把它放入宏中,并将其包装在函数中。
为什么不写一个包含你的时间代码的函数或宏,并用你的函数调用? –
添加程序级别或程序级别?如果是程序,你可以使用时间。如果在程序层面,则调用时间,保留价值,在程序结束后再次调用并记录时间戳。 – Jiminion
@CarlNorum即使然后我必须将这两个函数调用添加到每个函数。但那么这就是我最终可能做的 – punekr12