2

我想测量我在项目中使用的一些内联函数的性能和一般行为(创建了多少程序集等)。除了分析时间之外,是否可以查看使用这些内联函数的函数的总体代码扩展?

我尝试在 Visual C++ 和 MingW 中(通过 NetBeans)在调试期间查看反汇编面板。通过调试构建每个内联函数,在程序集中使用调用,因此它们不是内联的。如果我激活优化,程序集会发生很大变化,以至于我什至无法在这些函数中放置断点。

您是否知道任何编译器设置(例如在 GCC 或 VC 中,仅优化内联函数)、书籍(我有关于内联测量时间的“高效 C++”)或其他任何可以更好地理解该主题的内容?

4

2 回答 2

0

这是VS中编译器开关的链接。如果您只想内联测试,请启用此优化。

于 2013-03-21T15:45:01.677 回答
0

英特尔 VTune 等工具可以分析内联函数。他们使用二进制文件中的调试信息将指令指针映射回“从中派生代码”的函数,即使call程序集中不再存在实际代码。

您也可以在使用一些工具查看带注释的程序集时看到这种效果 - 几个函数的源代码将混合在一起,这反映了内联。

这个过程并不完美,因为对于某些类型的内联来说,“这个特定指令属于什么函数”几乎变成了一种哲学问题,而不是技术问题(实际上,指令可以有效地在多个函数之间“共享”)。

于 2017-02-19T20:25:37.477 回答