Két eltérő verziójú C fordító közül az újabb gyakran tud még olyan gyorsítási trükköket, amit a régi nem. Ez lehet utasításbeli (pl. AVX alkalmazása), vagy pusztán utasítás idők alapján másképp számolja.
Elnagyolt példa egy ősrégi és egy mai C fordító eltérő kódjára:
int modulo10(int number) {
return number%10;
}
Ezt réges-régen a "div" assembly utasítással tanultuk, amely az EDX:EAX regiszterpárban levő értéket elosztja a div argumentumával. Eredmény EAX-ben, maradék EDX-ben. Ez utóbbit adja vissza a függvény elvileg.
Viszont ha a fenti kódot lefordítod GCC-vel, akkor abban nem lesz div, annál inkább szorzás, szándékos túlcsordulás, shiftelés, kivonás, összegzés. Ennek segítségével a proci a hardveres DIV utasításánál gyorsabb megoldást tud csinálni. Furcsa elsőre, de nézd meg magad is, hogy mit fordít belőle a GCC -O2 hatására.
A fenti egy elnagyolt példa, már régen nem div-et használ erre a GCC, de vannak olyan napi dolgok, ahol az új verzióban szintén bevetnek ilyen trükköket.
Az viszont biztos, hogy a kiszámolt eredmény egyik esetben sem lehet a valóságtól eltérő. A lefordított kiszámoló program utasításai viszont a más verziójú C fordító esetén lehet más, általában gyorsabb futású megoldás.