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!:)
Meghívod ezt az ellenőrzést a programodban másodpercenként egymilliószor?
Ha nem, akkor teljesen mindegy, nem így kell optimalizálni.
Az hogy mi történik pontosan a háttérben az nyilván nyelvfüggő.
Pythonban pl. ha a két feltételt megvizsgálod a timeit-tal, akkor azt kapod, hogy mindkettő nagyjából 110 ns alatt fut le.
C-ben, ha belenézel az assembly-be, akkor az látod, hogy az egyik egy cmp+jle, a másik egy cmp+jne utasításpárosra képződik le, melyek nem különböznek lényegesen egymástól.
"Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%." ~ Donald Knuth
500 for ciklus 0-tól 268435455-ig, - if i = 268435454 vagy if i = 268435455, eredmény, ezredmásodpercekben, egy lassú gépen, Win7, Delphi 7:
Egyenlo: 155003
Nagyobb: 150778
@Simkol: Ezt nem így szokás számolni, pláne windows alatt. :)))
Ezzel csak kinevetteted magad.
Ezt mindenki tudja reprodukálni, bármilyen nyelven és tud következtetést levonni. Ez nem szakmai fórum, de ha gondolod essél neki és magyarázd el, hogy hogyan kellene, olyan embereknek, akiknek még egy ciklus is gondot okoz.
Egy párszor már elmondtam itt is, hogy a kérdés szintjéhez kell a választ igazítani.
Ha gondolod menjünk át a Prog.hu-ra és vitassuk meg ott is.
"Egy párszor már elmondtam itt is, hogy a kérdés szintjéhez kell a választ igazítani."
Ez a te vélerményed. Az enyém meg ettől eltér.
Ha egy 10 éves megkérdezi tőlem, hogy mennyi 320-szor 192, akkor sem azt válaszolom neki, hogy sok.
Ez a kérdező pedig kifejezetten normális volt, abszolút nem mutatta az itt oly gyakran megnyilvánuló "debilitás" jeleit.
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!