gpt4 book ai didi

c - 如何比较来自 gprof 的不同优化级别文件

转载 作者:行者123 更新时间:2023-12-02 17:47:52 27 4
gpt4 key购买 nike

各位,我正在运行 gprof 来检查两个不同优化级别(-g -pg 与 -O3 -pg)下的百分比执行时间。

所以我得到的结果是一个函数在 O3 中占用了 68% 的执行时间,但在 -g 版本中只有 9%。

我不确定如何找出背后的原因。我想在编译前比较两个版本文件,但我不确定 cmd 是否可以这样做。

有没有其他方法可以找出造成这个执行时间差的原因。

最佳答案

当您使用优化标志时,您必须小心解释 gprof/分析结果。使用 -O3 进行编译确实可以改变代码的结构,因此 gprof 无法判断在何处花费了多少时间。

特别是,具有更高优化级别的函数内联使您的某些函数将完全被内联代码取代,因此它们看起来根本不需要任何时间。花在这些子函数上的时间然后归因于调用它们的父函数,因此看起来花在给定父函数上的时间实际上增加了。

我找不到很好的引用资料。这是一个古老的例子:
http://gcc.gnu.org/ml/gcc/1998-04/msg00591.html
话虽这么说,但我预计在使用 -O3 运行 gprof 时会出现这种奇怪的行为。我总是只使用 -O1 优化来进行分析,以最大限度地减少这些影响。

关于c - 如何比较来自 gprof 的不同优化级别文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433169/

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