Оптимизация кода вида myFloat = (myLong/1000000.0)/30.0*100.0;

В одной из недавних тем, увидел в коде формулу
myFloat = (myLong/1000000.0)/30.0*100.0;
Т.к. теоретических знаний у меня не много, решил посмотреть на практике - влияет ли наличие скобок на оптимизацию кода при компиляции.
Я смотрел для UNO и настройках IDE 1.8.13 “по умолчанию”. (у автора было ESP8266).

Оказалось - не влияет (по крайней мере в данном случае), но и приведения к виду myFloat = myLong/300000.0; не делается.
myFloat = (myLong/1000000.0)/30.0*100.0; выполняется 1183 такта
myFloat = myLong/300000.0; выполняется 558 тактов

Дополнение. В комментариях отметили, что умножение выполняется быстрее деления, и что при ручном подсчете больше вероятность ошибки. С учетом этого, больше быстродействие у варианта
{
const float myTmp = (1/1000000.0)/30.0*100.0;
myFloat = myLong * myTmp; // выполняется 200 тактов
}
Конец дополнения.

Получается, для быстродействия, лучше сокращать вычисления в ручную.

Попутно удивился, что деление для Float может выполняться быстрее, чем для long
volatile long myLong = 123456789;
myFloat = myLong/300000.0; выполняется 560 тактов
myLong1 = myLong/300000; выполняется 630 тактов

всегда лучше подставлять готовую константу (по быстродействию и памяти)

вообще-то это совсем не то же самое, что

должно быть 5 нулей, а не 7.

Да, это единственная арифметическая операция, которая для float выполняется быстрее, чем для long. Деление в столбик - вообще очень медленная операция.
Но даже если работаете с float, умножение следует предпочитать делению, т.к. первое выполняется существенно (в 2.5-3 раза) быстрее второго.
Подробнее здесь:

А должно? Таких простых ошибок в компиляторах не бывает.

Да, спасибо. Исправил. (При измерениях было 5 нулей, ошибся при написании сообщения)