提问人:user14063792468 提问时间:11/3/2023 最后编辑:user14063792468 更新时间:11/3/2023 访问量:118
如何测量测量函数的执行时间?测量功能也需要一些时间才能执行
How to measure execution time of a measurement function? The measurement function also takes time to execute
问:
社区!
以伪代码为例:
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赞
the busybee
11/3/2023
#1
最简单、最直接的方法是使用输出引脚和示波器。我经常这样做,因为影响最小。您还可以“滥用”已使用的输出,例如连接到 LED。
在函数开始时或调用函数之前将引脚设置为一个级别。在通话结束时或通话后将其设置为另一个级别。如果您选择将语句放入函数中,请注意,通常 C 函数在第一个语句之前和最后一个语句之后都有一些“不可见”的开销。
要了解开销的时间,您可以在某个时间点切换图钉。作为额外的奖励,您可以通过切换脉冲的数量来标记不同的测量值。去过那里,做过那件事,有很好的洞察力。
通常,设置或复位引脚的时间开销远远小于测量时间。
请注意可能延长脉冲的中断,如果它们的 ISR 在测量函数期间执行。周期性测量期间的抖动表明了这种影响。
您不需要任何额外的库,不需要传输结果的通信通道,也不需要额外的内存。它甚至可以与最小的微控制器配合使用,但可以扩展到任何为您提供输出引脚的系统。
如果您不希望任何开销,则需要查看生成的机器代码并求和所需的时钟。对于不太复杂的微控制器来说,这也是一种可行的方法。
评论
time()