我正在开发一个用 C 语言编写的服务器程序,该程序编写为过程(而不是 OO)代码。每个方法都实现了一些特定的功能。出于诊断目的,我想将代码添加到一组方法中,这些方法将计算和打印各个函数的运行时间。它在 linux 上,我知道如何计算运行时间。
我的问题是最好、最有效的编码方式是什么?
因为它是用 CI 编写的程序代码,所以必须将代码添加到所有(大约 20 个)函数中,用于定时器启动、定时器结束和计算差值。还有比这更好的方法吗?
我正在开发一个用 C 语言编写的服务器程序,该程序编写为过程(而不是 OO)代码。每个方法都实现了一些特定的功能。出于诊断目的,我想将代码添加到一组方法中,这些方法将计算和打印各个函数的运行时间。它在 linux 上,我知道如何计算运行时间。
我的问题是最好、最有效的编码方式是什么?
因为它是用 CI 编写的程序代码,所以必须将代码添加到所有(大约 20 个)函数中,用于定时器启动、定时器结束和计算差值。还有比这更好的方法吗?
#include<time.h>
.
.
.
clock_t start, end, total;
start = clock();
.
.
.
end = clock();
total = (double) (start - end) / CLOCKS_PER_SEC;
这将为您提供以秒为单位的执行时间。您甚至可以将其放入宏中并将其包装在函数周围。
您可以使用外部分析器工具来满足此需求。gprof
是众所周知的标准工具。这是一个简单的使用示例:
$ gcc -pg a.c -o a
$ ./a
$ gprof
此工具显示每个函数的总运行时间(绝对和百分比)。
但是,如果您在运行时需要此信息,这几乎是无用的。