Hatékonyságnövelési trükkök

Ez a folyamatosan bővülő (ha van rá igény) topic különböző ötleteket mutat be azzal kapcsolatban, hogy hogyan lehet gyorsabbá tenni egy kódot. Remélem mondok vele újat.

Ne számold ki kétszer ugyanazt!

Számolás során minden egyes részeredményt, ami legalább kétszer előfordul, tárold el egy változóban.

Példa:

(a+b)*sqrt(a+b);

helyett:

c=a+b;
c*sqrt(c);

Ha lehet, kerüld a lebegőpontos számok alkalmazását!

Ha nem szükséges, akkor ne használj tört számok tárolására szolgáló adattípusokat, hanem inkább egész számokat. Tört számokkal a processzor nehezen boldogul. Ugyanis sokkal több ideig tart két lebegőpontos számmal számolni, mint két egésszel.

Matematikailag egyszerűsítsd a kifejezéseidet!

Ha igazán processzorölő programot csinálsz, akkor annak a gyors működéséhez elengedetlen, hogy a kifejezéseid egyszerűk legyenek. Ugyanis ti. a processzor máshogy számol, mint mi, így leggyorsabban az összeadást, kivonást végzi el. Kicsit lassabban a szorzást, és leglassabban az osztást. Így a kifejezések egyszerűsítésével jelentősen felgyorsíthatod a programod működését. Főleg azokat a kifejezéseket egyszerűsítsd, amik ciklusmagban vannak.

Példa Helyett
a*a-b*b (a+b)*(a-b)
dx*1000/FPS/2/DELAY dx*1000/(2*FPS*DELAY)

Optimalizáld ciklusaidat!

Minden ciklus addig fusson, ameddig kell; a ciklusmag pedig akkor, amikor kell. Ne sajnáljuk egy continue utasítással átugrani minden olyan esetet, amit nem kezelünk. Ha egy elemet keresünk egy tömbben, akkor azonnal lépjünk ki a ciklusból, ha megtaláltuk, egy break utasítással.

Egy jól tervezett cikluson múlhat, hogy milyen gyorsan fog futni a programod.

Használj hatékony algoritmusokat!

Mindent többféleképpen is meg lehet oldani. Leginkább a rendezéseknél jön elő, hogy milyen módszerrel érdemes egy tömböt rendezni. Kis elemszámnál a leghatékonyabb a buborékos rendezés, de 100000 elemnél, már a szortírozó algoritmusra lesz szükség, ami a lehető legkevesebb cserével rakja sorba a tömböt.