Melyikhez kell kisebb erőforrás (memória/processzor)?
1. x/a/b/c/d
vagy
2. x/(a*b*c*d)
Egész szám esetén az osztály kb 16x annyi órajelet igényel (x86 alapú architektúrán)
Lebegőpontos szám esetén kb 4x annyi órajel
Modern processzorokon a szűk keresztmetszet inkább a memória miatti késleltetés és a cache miss. Ez gyakorlatilag 200-2000 órajelet jelent.
Tehát csak akkor lesz érezhető a 2. verzió gyorsasága ha 1000 alkalommal lefut egy cuklisban.
Másrészről: a 2. egyértelműbb, olvashatóbb és semmibe nem kerül a fejlesztőnek. Nem korai optimalizálás, inkább ujjgyakorlat kérdése.
Ettől komolyabb megfontolású optimalizálás ha egy ciklusban 100+ alkalommal osztasz egy számmal és a ciklus előtt kiszámolod az inverzét, és azt használod. Ettől még olvasható lesz, főleg ha beszédes a változó neve "invVariable" és 0 hozzáadott idővel hatékonyabb kódot írsz. Ez nem is igazán optimalizálás, inkább tapasztalat és megfontoltság.
Kérdező, 5 perc alatt lehet írni egy programot, ami leteszteli, hogy x idő alatt hányszor tudja lefuttatni az első, aztán meg a második számolást. Hajrá!
G.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!