double answer = int2sinescale(input, minADC, maxADC) * int2sinescale(scaledsine[i], 0, 4095);
OK so when I wrap some timing code around it in the actual loop where it's being used, I get
28 microsecs (lockamp)
28 microsecs (lockamp)
27 microsecs (lockamp)
28 microsecs (lockamp)
28 microsecs (lockamp)
19 microsecs (lockamp)
28 microsecs (lockamp)
But when I just copy that line, put it into a shell command called "benchmark" (it looks like this):
starttime = micros();
double voltage = int2voltage(800, 0.55, 2.75);
elapsedtime = micros() - starttime;
Serial.print(elapsedtime); Serial.println(" microsecs (int2voltage)");
starttime = micros();
int sinescale = int2sinescale(2200, 688, 3424);
elapsedtime = micros() - starttime;
Serial.print(elapsedtime); Serial.println(" microsecs (int2sinescale)");
starttime = micros();
double answer = 0.55 * 2.7555324;
elapsedtime = micros() - starttime;
Serial.print(elapsedtime); Serial.println(" microsecs (multiply two doubles)");
starttime = micros();
voltage = int2sinescale(700, minADC, maxADC) * int2sinescale(scaledsine[3], 0, 4095);
elapsedtime = micros() - starttime;
Serial.print(elapsedtime); Serial.println(" microsecs (lockamp int2sinescale line)");
auteur > benchmark
1 microsecs (int2voltage)
1 microsecs (int2sinescale)
1 microsecs (multiply two doubles)
2 microsecs (lockamp int2sinescale line)
What the hell? None of these report such low execution times when I put timing code around them where they're actually being used in the program. What's actually going on?