gpt4 book ai didi

C++ 分析/优化 : How to get better profiling granularity in an optimized function

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:28 24 4
gpt4 key购买 nike

我正在使用谷歌的 perftools ( http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html ) 进行 CPU 分析——这是一个很棒的工具,帮助我对我的应用程序进行了大量的 CPU 时间改进。

不幸的是,我已经到了这样的地步,代码仍然有点慢,当使用 g++ 的 -O3 优化级别编译时,我所知道的是特定函数慢,但不知道它的哪些方面慢。

如果我删除 -O3 标志,则程序的未优化部分会超过此函数,并且我无法清楚地了解函数的实际运行缓慢的部分。如果我保留 -O3 标志,那么函数的慢部分将被内联,我无法确定函数的哪些部分是慢的。

有什么建议吗?感谢您的帮助!

最佳答案

对于这样的事情,我一直使用“老派”的方式来做:

在测量当前时间(或 cputime)的各个点语句中插入您要测量的例程。然后简单地打印或记录它们之间的差异,你就会知道每一段代码花了多长时间。从那里您可以找出大部分时间在吃什么,然后进入并在该部分中获得细粒度的时间,直到您知道问题是什么以及如何解决它。

如果函数调用的开销不是问题,您还可以使用 -fno-inline-small-functions -fno-inline-functions -fno-inline-functions-called- 强制关闭内联once -fno-inline (我不确定这些开关如何相互作用,但我认为它们是独立的)。然后,您可以使用普通的分析器查看调用图分析器,看看哪些函数调用占用了多少时间。

关于C++ 分析/优化 : How to get better profiling granularity in an optimized function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com