C++ 如何测量Arduino函数的速度';什么是死刑?

C++ 如何测量Arduino函数的速度';什么是死刑?,c++,time,arduino,measurement,stopwatch,C++,Time,Arduino,Measurement,Stopwatch,我需要确定Arduino执行某个函数的速度 什么时候做这件事最好?到目前为止,我发现了Stopwatch类,但我想知道是否有任何本机方法可以做到这一点。一个简单的方法是使用Arduino库中的或函数。使用可以获得更精细的结果 例如: unsigned long start = micros(); // Call to your function myFunction(); // Compute the time it took unsigned long end = micros(); unsi

我需要确定Arduino执行某个函数的速度


什么时候做这件事最好?到目前为止,我发现了Stopwatch类,但我想知道是否有任何本机方法可以做到这一点。

一个简单的方法是使用Arduino库中的
函数。使用
可以获得更精细的结果

例如:

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);

仔细阅读
的文档:有一些关于时间分辨率的信息。

最小干扰的方法是在函数调用之前将端口引脚设置为高,之后设置为低。将示波器放在端口引脚上,测量高电平时间


这还可以通过在上升沿触发和在下降沿观察抖动,让您对执行时间的可变性有一个很好的定性认识。

非常感谢。是的,我确实用过示波器,但有其他用途。问题是我必须能够在我的程序中使用该变量。在从结果中删除“micros”函数的calltime之前,不要忘记对其计时,它可能非常重要。无符号长m1=micros();无符号长m2=微秒();无符号长mt=m2-m1。。。无符号长增量=结束-开始-mt@UgoRobain一开始这似乎是个好主意,但试图通过使用计时函数本身来消除计时函数中的错误,这本身就是有缺陷的。你能详细说明一下吗?我不明白为什么两次调用“micros”并减去结果不会给我micros所花费的时间。如果在执行函数计时之前调用此函数,则可以将“微秒”持续时间减去两倍,从而获得myFunction更精确的计时。抱歉,请将“微秒”持续时间减去一倍。