У меня есть ситуация, когда мне может нужно применить множитель к значению, чтобы получить правильные результаты. Это включает вычисление значения с использованием деления с плавающей запятой.
Я думаю, что было бы неплохо проверить значения перед тем, как выполнять с ними логику с плавающей запятой, чтобы сэкономить время процессора, однако я не уверен, насколько эффективными они будут во время выполнения.
Я предполагаю, что проверка if
состоит из 1 или 2 инструкций (это было некоторое время после класса ассемблера), и что операция с плавающей запятой будет намного больше, чем эта.
//Check
if (a != 10) { //1 or 2 instructions?
b *= (float) a / 10; //Many instructions?
}
Значение a
в большинстве случаев будет равно 10, однако есть несколько случаев, когда этого не произойдет. Будет ли деление с плавающей точкой занимать очень много циклов, даже если a
равно делителю?
Будет ли предыдущий код с оператором if
выполняться эффективнее, чем просто без следующего?
//Don't check
b *= (float) a / 10; //Many instructions?
Конечно, в любом случае не будет заметных различий, однако мне любопытно, как будет работать умножение с плавающей запятой, когда делитель равен дивиденду в случае, если процессор нагружается.