在微控制器上更高效地进行 C++ 基准测试

3

我有兴趣测试NXP LPC 804微控制器上各种ETL和STL库函数的执行速度。目前,我通过为每个函数创建一个C++程序并使用示波器测量结果来进行测试,但这往往会产生相当不稳定的结果。

我已经调查了各种基准测试套件,如Nanobench和Google Benchmark,但都没有用。有人知道更有效的解决方案吗?因为这更多是一种方法学上的探讨而不是编程问题,所以我没有任何代码附加。

如果有更适合的Stack Exchange渠道,我将很乐意删除此帖子并在那里重新发布。谢谢!

编辑:为了增加一些细节:

  • 通过“不稳定的”结果,我指的是当我在while循环中连续运行一个函数时,示波器给出的周期持续时间会在几个不同的频率之间闪烁。我注意到这在毫秒尺度上比微秒尺度上更频繁。
  • 以下是示例函数基准测试的结构:
int main() {
    while (true) {
        // set GPIO pin
        // execute some function
        // clear GPIO pin
    }
    return 0;
}
  • 由于这是一项正式的研究评估,我被建议使用标准基准测试套件或示波器,而不是自己使用定时器创建基准测试函数,因为据说微控制器定时器相对不太精确。

1
你只想要测量执行时间还是这个基准测试应该对I/O进行一些操作? - bartop
1
“变量结果”是什么意思?您是否会在相同的指令序列中获得不同的度量值?您如何测量执行时间,通过切换引脚吗? - the busybee
3
示波器是基准测试之王,没有任何垃圾软件可以与之相提并论。你的问题很可能与你的测试方式有关。例如,如果你抓取一个单独的函数并将其放在上下文之外,你可能会阻止优化。或者,你正在对未经优化的代码进行基准测试。等等。 - Lundin
3
若有后台中断运行,显然会严重影响测量结果。 - Lundin
1
一旦您认为已经计时了各个功能并选择了应用程序的路径,那么这些计时就可能会改变。 - old_timer
显示剩余6条评论
1个回答

0
根据数据表,LPC804具有“32位通用计数器/定时器”,也许您可以配置它来进行测量。这样,您就可以编写一次计时代码并通过程序检查结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接