How to measure the speed of an Arduino function's execution?
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.