【发布时间】:2016-08-01 13:02:46
【问题描述】:
为什么我不能逐行获取优化代码的分析数据?为什么我在排队?我知道有编译器优化,但每条装配线都有与之匹配的 c 源代码。我知道我可以对函数进行分析,但我想检查每行花费了多少时间。 我需要知道何时完成指令提取以及需要多少个周期,以及在何处完成数据提取以及(显然 - )加快代码速度。
【问题讨论】:
-
如果一条指令或数据获取需要 X%(如 30%)的时间,每个随机暂停将以 X% 的概率落在它上面。例如,您可以使用 GDB 对优化代码执行此操作。然后,将其追溯到有罪的代码行。 (注意这不是测量周期,它是精确定位昂贵的指令。X% 越大,需要的样本越少。)如果你真的需要知道周期,试试 valgrind 或类似的东西。