¿Qué compila para un código más rápido: "ans = n * 3" o "ans = n + (n * 2)"?¿Qué compila para un código más rápido: "n * 3" o "n + (n * 2)"?
Suponiendo que n es un int o un long, y se está ejecutando en un moderno Win32 Intel box.
¿Sería esto diferente si hubiera alguna desreferencia involucrada, es decir, cuál de estas sería más rápida?
long a; long *pn; long ans; ... *pn = some_number; ans = *pn * 3;
O
ans = *pn+(*pn*2);
O, ¿es algo que uno no tiene que preocuparse de que los compiladores de optimización son propensos a dar cuenta de esto en cualquier caso?
No estés tan seguro :) Vi algunos compiladores realmente extraños para el desarrollo de software integrado. – aku
En los sistemas integrados, casi todo el conocimiento convencional termina. ;-) –