我可以制作一个模板函数 noinline 还是强制它出现在分析器中?
Can I make a template function noinline or else force it to appear in the profiler?
我正在尝试在 Ubuntu 20.04 上使用 perf
进行分析,但问题是许多函数没有出现在其中(可能是因为它们是内联的),或者只出现了它们的地址(没有名字等)。我正在使用 CMake 的 RelWithDebInfo
构建。但是有一些模板函数我不知道如何将其带到分析器结果中。我认为如果这在 C++ 中对于模板函数是合法的,那么将它们标记为 noinline
可能会有所帮助,但这会破坏代码库并且需要按函数完成。有什么关于如何同时实现所有功能 noinline
的建议吗?
您可以将 -fno-inline
添加到 CMAKE_CXX_FLAGS
。
来自GCC man page:
-fno-inline
Do not expand any functions inline apart from those marked
with the "always_inline" attribute. This is the default when
not optimizing.
Single functions can be exempted from inlining by marking
them with the "noinline" attribute.
我正在尝试在 Ubuntu 20.04 上使用 perf
进行分析,但问题是许多函数没有出现在其中(可能是因为它们是内联的),或者只出现了它们的地址(没有名字等)。我正在使用 CMake 的 RelWithDebInfo
构建。但是有一些模板函数我不知道如何将其带到分析器结果中。我认为如果这在 C++ 中对于模板函数是合法的,那么将它们标记为 noinline
可能会有所帮助,但这会破坏代码库并且需要按函数完成。有什么关于如何同时实现所有功能 noinline
的建议吗?
您可以将 -fno-inline
添加到 CMAKE_CXX_FLAGS
。
来自GCC man page:
-fno-inline Do not expand any functions inline apart from those marked with the "always_inline" attribute. This is the default when not optimizing. Single functions can be exempted from inlining by marking them with the "noinline" attribute.