利用回调函数计算函数运行时间

前言

  曾有一段时间在写一个小程序,由于其对运行时间有要求,所以每写一段代码就要测试一下运行时间,如果超出就需要优化一下代码或换一种方法和算法。但是每次都需要插在某两个位置插两段代码感觉有点烦,也有点浪费时间,毕竟浪费时间就是浪费生命,本着保尔柯察金关于生命的言论,Shaun 不愿虚度年华,所以只得寻找一个方便简洁的方法计算运行时间(说了这么多,说到底其实就是懒吧 */ω\*)。后面就想到了回调函数,将想要计算运行时间的代码段放入一个函数中,并将其作为回调函数,用事先写好的计算时间函数调用它,从而方便计算该代码段的运行时间。

正文

Show u the code,具体 C++ 实现代码为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <ctime>
#include <cstdio>

#define _CALLED_ printf("The function %s", __FUNCTION__);

// 使用回调函数计算一段代码执行时间
void computeTotalTime(void(*processingCallback)() = 0)
{
clock_t start_time = clock();
processingCallback();
clock_t end_time = clock();
printf(" takes: %fs.\n", (double)(end_time - start_time) / CLOCKS_PER_SEC);
}

void test()
{
for (int i = 0; i < 1000; i++)
{
printf("Hello World!\n");
}
_CALLED_;
}

int main(int argc, char *argv[])
{
computeTotalTime(test);
return 0;
}

以上代码在 Win10 VS2013 中编译运行成功。

后记

  本来是想在网上找一个的,谁知道并没有找到,就只有自己动手实现一个了 ╮(╯_╰)╭。后面使用了一下该函数,发现好像并没有提高生产力 o(╯□╰)o,所以就没人放在网上?-_-!,不过确实从实现过程中学到了一些东西 ↖(^ω^)↗。

参考资料

[1] C/C++之回调函数http://www.cnblogs.com/danshui/category/345046.html

[2] c/c++在windows下获取时间和计算时间差的几种方法总结http://blog.csdn.net/coder_xia/article/category/837943

[3] (转)用宏获取函数名http://www.cnblogs.com/steady/category/264974.html