您可以使用哪些技术来分析代码

Evi*_*ach 3 c++ profile profiler homebrew

我开发的一些平台没有分析工具.我正在寻找您个人用来帮助您识别热点的建议/技巧,而无需使用分析器.

目标语言是C++.

我对你个人使用的东西很感兴趣.

Cor*_*ger 8

不开玩笑:除了将时间转储到std :: cout和其他面向文本/数据的方法之外,我还使用了Beep()函数.听到两个"哔"检查点之间的沉默差异会产生不同的印象.

这就像查看书面乐谱和实际听到音乐之间的区别.这就像读取rgb(255,0,0)和看到消防车红色之间的区别.

所以,现在,我有一个客户端/服务器应用程序和不同频率的蜂鸣声,标记客户端发送消息的位置,服务器开始其回复,完成其回复,回复首先进入客户端等,我可以非常自然而然地感觉到时间花在哪里.


And*_*son 5

我发现以下内容非常有用:

#ifdef PROFILING
# define PROFILE_CALL(x) do{ \
    const DWORD t1 = timeGetTime(); \
    x; \
    const DWORD t2 = timeGetTime(); \
    std::cout << "Call to '" << #x << "' took " << (t2 - t1) << " ms.\n"; \
  }while(false)
#else
# define PROFILE_CALL(x) x
#endif
Run Code Online (Sandbox Code Playgroud)

哪个可以在调用函数中使用:

PROFILE_CALL(renderSlow(world));
int r = 0;
PROFILE_CALL(r = readPacketSize());
Run Code Online (Sandbox Code Playgroud)