WTF ludzie :D przecież kompilator zrobi optymalizację.
gcc z maja tego roku, -O3 -march=native
Kod Graya rozwija się w asm (składnia intela) do:
6 test
4 jmp
2 cmp
7 call
3 js
3 jle
1 jg
1 jns
Kod tibia77:
0 test
9 jmp
4 cmp
12 call
0 js
1 jle
3 jg
0 jns
Od razu widać który jest lepszy.
To przy nieznanych wartościach. Jeżeli da radę coś policzyć wcześniej, wtedy porównania w ogóle znikną i zostanie policzona wartość z miejsca.
Poza tym na nowych procesorach porównanie nie będzie równe jednemu clockowi więc nie ma co się zagłębiać w sprawę.
Jeżeli chodzi o stylistykę, kod Graya będzie dużo łatwiejszy do przeczytania bez znanych wartości.
Pamiętajcie, porównania w wysokim języku nie wyznaczają ilości instrukcji w asm na zasadzie 1 do 1, nowe kompilatory nie są głupie.
#edit zaspany zapomnialem o condition jumpach
Zakładki