无需修改代码即可测量函数执行时间

问题描述 投票:0回答:1

我在库中找到了一些代码(函数),可以通过编译器的优化来改进(作为主要思想 - 找到好东西来深入编译器)。我想通过脚本自动测量该函数的执行时间。由于它是库中的低级函数并获取参数,因此很难提取它。 因此我想找出在不修改库/应用程序/环境的情况下精确测量该函数的方法(精确的CPU时间)。您有什么想法如何实现这一目标吗?

我可以编写包装器,但在不久的将来我需要更多的应用程序进行性能测试,我认为为每个应用程序编写包装器是非常丑陋的。

P.S.:我的代码将在 ARM (armv7el) 架构上运行,该架构具有某种“性能监视器控制”寄存器。我已经了解了linux内核中的“perf”。但不知道这是我需要的吗?

linux performance time benchmarking measurement
1个回答
0
投票

尚不清楚您是否有权访问您想要分析或改进的函数的源代码,即您是否能够重新编译所考虑的库。

如果您在最新的 Linux 系统上使用最新的 GCC(至少是 4.6),您可以使用类似

gprof
(假设您能够重新编译库)或更好的
oprofile
(您可以无需重新编译即可使用),并且您可以根据需要自定义 GCC。

请注意,与任何测量一样,分析可能会改变观察到的现象。

如果您正在考虑出于优化目的定制 GCC 编译器,请考虑为此目的制作一个 GCC 插件,或者更好的是制作一个 MELT 扩展(MELT 是一种用于扩展 GCC 的高级领域特定语言)。您还可以根据自己的特定分析目的自定义 GCC(使用 MELT)。

© www.soinside.com 2019 - 2024. All rights reserved.