代码改变世界

一个简易的C++性能分析工具

2015-04-22 11:20  刘腾达的博客  阅读(495)  评论(0编辑  收藏  举报

我们的服务器项目有好几万行代码,昨天想分析一下其性能瓶颈,看看有没可优化的地方。

gcc 提供了 __PRETTY_FUNCTION__ 宏,放在哪个函数体内,就表示哪个函数的名字,和 __LINE__ 类似。利用这个宏,我们可以向每个函数体内插入几行代码,记录下被调用的 Log。

我用 Python 写了一个脚本,分析所有 .cpp 文件中的 function,在函数体前面加上三行代码 :

    #if __FUNC_CALL_LOG__
        LOGOUT("FUNC CALL : %s\n", __PRETTY_FUNCTION__);
    #endif

除此之外,还有写一个去掉所有分析代码的方法。

大约 100 行 Python 代码就可以把功能做出来,试了下,达到了预期效果。剩余的事情就是利用 Python 分析服务器产生的 Log,看看哪些函数被调用次数最多,寻找优化的办法。