Welche kompiliert zu schneller Code: "ans = n * 3" oder "ans = n + (n * 2)"?Welche kompiliert zu schneller Code: "n * 3" oder "n + (n * 2)"?
Angenommen, dass n entweder ein Int oder ein Lang ist, und es ist auf einer modernen Win32-Intel-Box läuft.
Wäre dies anders, wenn eine Dereferenzierung beteiligt wäre, dh welche wäre schneller?
long a; long *pn; long ans; ... *pn = some_number; ans = *pn * 3;
Oder
ans = *pn+(*pn*2);
Oder es ist etwas, das man braucht sich keine Sorgen darüber, wie optimierende Compiler sind wahrscheinlich für diese in jedem Fall zu berücksichtigen?
Seien Sie nicht so sicher :) Ich sah einige wirklich komische Compiler für Embedded-Software-Entwicklung. – aku
In eingebetteten Systemen endet fast alles konventionelle Wissen. ;-) –