【问题标题】:How to measure the speed of an Arduino function's execution?如何测量 Arduino 函数的执行速度?
【发布时间】:2012-05-07 02:15:24
【问题描述】:

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

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

【问题讨论】:

    标签: c++ time arduino measurement stopwatch


    【解决方案1】:

    一种直接的方法是使用 Arduino 库中的 @987654321@@987654322@ 函数。使用@987654323@,您将获得更精细的结果。

    例如:

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

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

    【讨论】:

    • 不要忘记在从结果中删除其调用时间之前对“micros”函数进行计时,这可能很重要。无符号长 m1 = micros();无符号长 m2 = micros();无符号长 mt = m2 - m1; ... unsigned long delta = end - start - mt;
    • @UgoRobain 起初这似乎是个好主意,但尝试通过使用自身计时来消除计时函数中的错误,这在本质上是有缺陷的。
    • 您能详细说明一下吗?我不明白为什么两次调用“micros”并减去结果不会给我 micros 所花费的时间。如果您在执行函数计时之前调用它,您可以减去两倍的“微”持续时间,从而获得更精确的 myFunction 计时。
    • 一次“微”持续时间,对不起。
    【解决方案2】:

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

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

    【讨论】:

    • 非常感谢。是的,我确实使用了示波器,但用于其他目的。问题是我必须能够在我的程序中使用该变量。
    猜你喜欢
    • 2017-11-24
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多