c++ - 更有效地在微 Controller 上对 C++ 进行基准测试

标签 c++ embedded microcontroller benchmarking

我有兴趣对 NXP LPC 804 微 Controller 上各种 ETL 和 STL 库函数的执行速度进行基准测试。目前,我正在为每个函数创建一个 C++ 程序,然后用示波器测量结果,另一方面,这往往会产生相当多变的结果。

我研究过各种基准测试套件,例如 Nanobench 和 Google Benchmark,但都没有奏效。有谁知道更有效的解决方案?由于这本身是一个方法论问题,而不是一个编程问题,因此我没有任何代码可以附加。

如果有更合适的 Stack Exchange channel ,那么我会很乐意删除这篇文章并重新发布。谢谢!

编辑:添加更多细节:

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

最佳答案

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

关于c++ - 更有效地在微 Controller 上对 C++ 进行基准测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62445241/

相关文章:

C++加密和解密Lua文件

c++ - 如何在 Mac 上编译 AssaultCube?缺少 libintl.h

C++ - 返回码异常的参数

browser - 有没有适用于触摸屏设备的开源浏览器?

microcontroller - STM32L1 的直接内存访问 RX

c++ - VS2005 和 VS2008 的并排 list 问题

c - 为什么 strcpy() 和 strcat() 在嵌入式域中不好用

embedded - cortex a9 开机和内存

arm - "CPU is not halted"和 "No APB-AP found"错误

将 ASCII 转换为十进制 C 微 Controller 蓝牙