Melyik feltételvizsgálat fut le gyorsabban?
Tegyük fel, hogy van egy konkrét eset, ahol ha az "x" változó értéke nagyobb mint 5, akkor minden esetben pontosan 6 lesz. Ebből következik, hogy a végeredmény szempontjából az alábbiak közül mindkettő jó megoldás:
if (x > 5)
if (x == 6)
A kérdésem az, hogy a relációnak vagy az egyenlőségnek egyszerűbb a kiértékelése (és így fut le gyorsabban)?
Tisztában vagyok vele, hogy a legtöbb esetben ez teljesen lényegtelen, de most szeretném a lehető leghatékonyabb kódot írni, és előre kérlek titeket, hogy a kérdéssel foglalkozzatok, és ne azzal, hogy van-e bármi értelme. Köszi!:)
Kösz, hogy lenézel, tudok programozni, nem tudom miből vontad le, hogy nem.
Így jobban végiggondolva belátható, hogy a harmadik válaszolónak igaza van, csak a kérdés kiírásakor nem sikerült összeszedni a gondolataimat.
"Nem nézlek le, de sem nyelv sem fordító megnevezése nem volt,"
A műveletek közötti sebességkülönbségre gondolt. Nem kell ehhez semmiféle nyelv meg fordító.
Itt látható a különbség, a sima komparátor és a teljes összehasonlítást (kisebb, nagyobb, egyenlő) végző mű között. Természetesen utóbbinak sokkal nagyobb a költségigénye és az utóbbi - nyilván - a lassabb is.
"azt viszont nem tudom, hogy a relációt miként tudja a processzor a lehető legegyszerűbben feldolgozni, szóval az is lehet, hogy ahhoz is elég egyetlen számítás, és máris hülyeséget írtam az előbb"
Ahogy már fentebb leírtam, processzor szintjén az első egy cmp+jle, a másik egy cmp+jne párosra képződik le. A cmp azt csinálja, hogy kivonja a két számot egymásból, és beállítja a szükséges flag-eket. A jle azt csinálja, hogy ugrik a feltételhez, ha a zero flag = 1, vagy a signal flag != 0. A jne meg azt csinálja, hogy ugrik a feltételhez, ha a zero flag = 0.
#16: Szerintem ne vezesd félre a kérdezőt ilyen butasággal.
Nem jó amit írtál.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!