Portál AbcLinuxu, 15. července 2025 05:19
(a-b)/(c-d)
a o pár riadkov nižšie v tej istej funkcii mám (c-d)/(a-b)
, dokáže kompilátor využiť to, že jedno je obrátenou hodnotou druhého, alebo aspoň to, že tie rozdiely už má spočítané?
Zaujíma ma to predovšetkým pre Sun-ovskú javu a gcc/msvc, ale zaujímavé budú aj odpovede pre iné kompilátory a jazyky.
tak to zkompiluj a mrkni se co z toho vylezlo..já to tak normálně na AVR a gcc dělám..optimalizuje se to dost..některé věci vynechává ale jde spíš o nějaké temp promněnné apod..když zjistí že nejsou třeba
ono , v uz delsi dobu je rychlejsi neco zpocitat nez to vyvolavat z hloubky pameti....
void fn(float a, float b, float c) { float x = a + b + c; float y = c + b + a; // spočítá se znovu. // ... }Toto chování lze změnit, doporučuju podívat se na možnosti svého překladače. Pokud se bavíme o dynamicky typovaných jazycích, tak tam jsou optimalizace tohoto typu nulové, překladač může optimalizovat maximálně výpočty konstant - třeba 3+5.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.