Kezdőoldal » Számítástechnika » Programozás » Egy program optimalizálása...

Egy program optimalizálása mit jelent?

Figyelt kérdés

Én ha írok egy kódot, sablonos elemekre építem fel, én nem tudnám máshogy megírni az adott feladatot.

Optimalizáláshoz kell valami különféle gondolkodásmód? hogy lehet tudni,hogy optimalizálatlan egy kód? Mit kell keresni? Mit kell cserélni? Erre is vannak megfelelő sablonos algoritmusok?

Ui:Hobbi szinten programozok" python-ba


2015. júl. 29. 07:51
 1/5 anonim ***** válasza:
100%

Optimalizálás alatt kétféle dolgot szoktunk érteni. "Gépi" és "humán":


A "humán" optimalizálás (ez a ritkább eset a szóhasználatra) annyit tesz, hogy olvashatóbb a kód, megfelelően van tabulátorozva (Pythonban ez kötelező), a változónevek egyértelműek, újrafelhasználhatóbb, satöbbi. Nagyon ritkán szokták ezt érteni alatta, de van ahol ezt is optimalizálásnak tekintik.


Mondok egy triviális példát a "gépire":

Van egy rendezett számsorozatod 1-től 100-ig. Meg kell keresni benne az 57-est.


Egy optimalizálatlan keresés lineárisan keres. Megnézi az első elemet, a másodikat, a harmadikat, satöbbi.


Egy optimalizált keresés logaritmikusan keres. Megnézi a középső elemet, ha az a keresett akkor megáll. Ha kisebb akkor az első-középső elem közötti középső elemét veszi, ha nagyobb akkor a középső-legutolsó elem középső elemét nézi, és így tovább.


A logaritmikus keresés általánosságban (nem minden esetben!) pedig gyorsabb mint a lineáris. Hátránya, hogy csak rendezett adatokon működik.

2015. júl. 29. 08:52
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
uh basszus azt hiszem megértettem a lényeget :O
2015. júl. 29. 09:05
 3/5 anonim ***** válasza:
Többféle szempont szerint lehet optimalizálni, ezek részben ellentmondanak egymásnak. Sebesség, válaszadási idő, skálázhatóság, és még több szempont. Mindegyik mást igényel.
2015. júl. 29. 11:45
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

Mondok egy nagyon triviális és nem is túl jó példát:

Mondjuk van egy kódrészlet, amit sokszor használsz. Ha minden szükséges helyre beszúrod (vagy inline függvénybe teszed), akkor sebességre optimalizáltál a méret és a módosíthatóság rovására. Ha függvénybe teszed és a szükséges helyekről meghívod, akkor méretre optimalizáltál és jobban kezelhető a kód, viszont a hívások miatt lassabb. Például ha egy ciklusban hívogatsz többszörösen egymásba ágyazott függvényeket, akkor a futásidő egész nagy részét tudja kitenni csak a stack kezelés.

(Manapság méretre inkább csak kis beágyazott rendszerekben van jelentősége optimalizálni, ezt inkább csak példának írtam.)


De ahogy fentebb írták, algoritmust is lehet optimalizálni, például a munkaadatok alapján. Mondjuk ha egy csomó azonos típusú elemet kell tárolnod, akkor el kell dönteni, hogy keresni akarsz bennük gyorsan de ritkán változik a sorrend (ilyenkor teheted tömbbe, vektorba), vagy mondjuk sűrűn kell sorba rendezni, beszúrni elemeket (ekkor meg valamilyen dinamikus láncba).

2015. júl. 30. 19:06
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

Itt egy egyszerű példa:

Van egy multiplayer játékod. Egy optimalizálatlan kód másodpercenként többször, akár 10-20 szor is elküldi a pozíciódat a szervernek.

Egy optimalizált pedig csak akkor, amikor a játékos ténylegesen megmozdul.

Azért csináljuk, hogy a programunk gyorsabban fusson.

++zöldkéz az előttem lévőknek, ők elmondták a lényeget

2015. aug. 2. 23:19
Hasznos számodra ez a válasz?

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

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!