社区!
举一个伪代码的例子:
start = time(...); /* I do not remember arguments. Long time no std lib usage */
end = time(...);
actual_measurement_function_call_time = end - start;
字符串
我想测量执行一个time
函数所需的时间。
以下面的图表为例:
1,2 - is a start of "time" function
* - some code, not optimized
! - time value gets copied
1 ************ ! ****** 2 ************ ! ******
型
- -测量或多或少是精确的。但我不知道设备。它可能仍然不同,你怎么认为?**-我认为这一部分将是相同的。
我错过什么了吗?
这个想法是平均化,就像很少的函数调用一样,以获得更稳定的结果。但是现在,我对如何做到这一点感到困惑。
1条答案
按热度按时间ntjbwcob1#
最简单和直接的方法是使用输出引脚和示波器。我经常这样做,因为影响最小。您也可以“滥用”已经使用的输出,例如连接到LED。
在函数开始或调用之前,将pin设置为一个级别。在调用结束或之后,将pin设置为另一个级别。如果您选择将语句放入函数中,请注意,通常C函数在第一个语句之前和最后一个语句之后都会有一些“不可见”的开销。
为了获得时间开销的印象,您可以在某个时候切换引脚。作为额外的奖励,您可以通过切换脉冲的数量来标记不同的测量。在那里,这样做,有很好的见解。
通常,设置或重置引脚的时间开销远小于测量时间。
如果ISR在测量过程中执行,请注意可能会延长脉冲的中断。周期性测量期间的抖动表明了这种影响。
您不需要任何额外的库,没有通信通道来传输结果,没有额外的内存。它甚至可以与最小的微控制器一起工作,但可以扩展到任何提供输出引脚的系统。
如果你不想增加任何开销,你需要查看生成的机器码并计算所需的时钟。这对于不太复杂的微控制器来说也是一种可行的方法。