简体   繁体   中英

How to measure the speed of an Arduino function's execution?

I need to determine the speed with which Arduino executes a certain function.

What would be the best time to do that? So far I found something with a Stopwatch class, but I'm wondering if there's any native method to do that.

A straightforward way is to use the millis() or micros() function in the Arduino library. You will have a finer grain result with micros() .

For instance:

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

Read carefully the documentation of micros() : there are some information about the time resolution.

the least intrusive way is to set a port pin high before the function call and low afterwards. Put an oscilloscope on the port pin and measure the high-time.

This can also give you a good qualitative idea of the variability of execution time by triggering on the rising edge and watching the jitter on the falling edge.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM