如何衡量Arduino函数的执行速度?

Eug*_*gen 10 c++ time measurement arduino stopwatch

我需要确定Arduino执行某个功能的速度.

什么是最好的时间呢?到目前为止,我发现了一个带有秒表类的东西,但我想知道是否有任何本地方法来做到这一点.

Vin*_*ren 18

一种直接的方法是使用Arduino库中的millis()micros()函数.你将获得更精细的谷物结果micros().

例如:

unsigned long start = micros();
// Call to your function
myFunction();
// Compute the time it took
unsigned long end = micros();
unsigned long delta = end - start;
Serial.println(delta);
Run Code Online (Sandbox Code Playgroud)

仔细阅读以下文档micros():有一些关于时间分辨率的信息.

  • 你能详细说明一下吗?我不明白为什么两次调用“micros”并减去结果不会给我 micros 所花费的时间。如果您在执行函数计时之前调用此函数,则可以减去两倍的“微”持续时间,从而获得更精确的 myFunction 计时。 (2认同)

Mar*_*son 9

最不具侵入性的方法是在函数调用之前将端口引脚设置为高电平,然后将其设置为低电平.将示波器放在端口引脚上并测量高电平时间.

通过触发上升沿并观察下降沿的抖动,这也可以为您提供执行时间可变性的良好定性思路.