我在库中找到了一些代码(函数),可以通过编译器的优化来改进(作为主要思想 - 找到好东西来深入编译器)。我想通过脚本自动测量该函数的执行时间。由于它是库中的低级函数并获取参数,因此很难提取它。 因此我想找出在不修改库/应用程序/环境的情况下精确测量该函数的方法(精确的CPU时间)。您有什么想法如何实现这一目标吗?
我可以编写包装器,但在不久的将来我需要更多的应用程序进行性能测试,我认为为每个应用程序编写包装器是非常丑陋的。
P.S.:我的代码将在 ARM (armv7el) 架构上运行,该架构具有某种“性能监视器控制”寄存器。我已经了解了linux内核中的“perf”。但不知道这是我需要的吗?
尚不清楚您是否有权访问您想要分析或改进的函数的源代码,即您是否能够重新编译所考虑的库。
如果您在最新的 Linux 系统上使用最新的 GCC(至少是 4.6),您可以使用类似
gprof
(假设您能够重新编译库)或更好的 oprofile
(您可以无需重新编译即可使用),并且您可以根据需要自定义 GCC。
请注意,与任何测量一样,分析可能会改变观察到的现象。
如果您正在考虑出于优化目的定制 GCC 编译器,请考虑为此目的制作一个 GCC 插件,或者更好的是制作一个 MELT 扩展(MELT 是一种用于扩展 GCC 的高级领域特定语言)。您还可以根据自己的特定分析目的自定义 GCC(使用 MELT)。