Constant Folding

a konstans operandusú kifejezések kiértékelhetők fordítási időben, ezáltal javítva a futásidejű teljesítményt és csökkentve a kód méretét azáltal, hogy elkerüljük a fordítási időben történő kiértékelést.

példa:

az alábbi kódrészletben a (3 + 5) kifejezés fordításkor kiértékelhető, és helyettesíthető a 8 állandóval.

int f (void){ return 3 + 5;} 

az alábbiakban látható a kódrészlet állandó hajtogatás után.

int f (void){ return 8;} 

Megjegyzések:

az állandó hajtogatás viszonylag egyszerű optimalizálás.

a programozók általában nem írnak közvetlenül olyan kifejezéseket, mint a (3 + 5), de ezek a kifejezések viszonylag gyakoriak a makró bővítés és más optimalizálások, például az állandó szaporítás után.

minden C fordító egész konstans kifejezéseket hajthat végre, amelyek a makró bővítése után vannak jelen (ANSI C követelmény). A legtöbb C fordító egész állandó kifejezéseket hajthat végre, amelyeket más optimalizálások után vezetnek be.

egyes környezetek számos lebegőpontos kerekítési módot támogatnak, amelyek menet közben dinamikusan módosíthatók. Ezekben a környezetekben az (1.0 / 3.0) kifejezéseket futási időben kell értékelni, ha a kerekítési mód fordításkor nem ismert.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.