Kezdőoldal » Számítástechnika » Programozás » Melyik feltételvizsgálat fut...

Melyik feltételvizsgálat fut le gyorsabban?

Figyelt kérdés

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!:)


2017. ápr. 3. 16:08
1 2
 11/17 A kérdező kommentje:

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.

2017. ápr. 3. 19:38
 12/17 A kérdező kommentje:
...vagyis pillanatnyilag úgy gondoltam, hogy az az egyszerűbb, mert elég két konkrét szám egyezését vizsgálni, 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.
2017. ápr. 3. 19:47
 13/17 SimkoL ***** válasza:
Nem nézlek le, de sem nyelv sem fordító megnevezése nem volt, ezért marad a teszt. Nézd meg itt [link] ugyanaz a pár sor 17 nyelven tesztelve mit hozott.
2017. ápr. 3. 20:06
Hasznos számodra ez a válasz?
 14/17 anonim ***** válasza:

"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ó.

2017. ápr. 3. 20:33
Hasznos számodra ez a válasz?
 15/17 anonim ***** válasza:

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.


[link]

2017. ápr. 4. 06:55
Hasznos számodra ez a válasz?
 16/17 anonim ***** válasza:

"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.

2017. ápr. 4. 09:21
Hasznos számodra ez a válasz?
 17/17 anonim ***** válasza:

#16: Szerintem ne vezesd félre a kérdezőt ilyen butasággal.

Nem jó amit írtál.

2017. ápr. 4. 12:37
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!