Egy program vagy játék sebessége függ attól, hogy a fejlesztőkörnyezet milyen fordítót használ?
"csak értelmezni kellene, amit írtam, azon belül is az "optimális" szó jelentését."
Értelmeztem, így derült ki, hogy dilettáns vagy.
A forráskód egy, a compiler szintjénél magasabb absztrakciós szint produktuma. Így ahhoz kb. semmi köze nincs. A compiler értelmezi és fordítja le gépi kódra a forrást. Ha igény van rá, akkor optimalizálja is. Ami annyit tesz, hogy A SAJÁT MUNKÁJÁT valósítja meg másképpen, nem pedig a forráskódba "javít" bele. Az optimalizáció történhet sebességspecifikusan, de úgy is lehet optimalizálni, hogy a program a lehető legkevesebb memóriát használja fel. Ekkor persze a viszonylagos lassúsággal "fizet" az, aki futtatni kivánja a programot.
Az optimalizálás ott kezdődik - hátha te is megérted - hogy a fordító nem a program írója, hanem a saját "hibáit" javítja ki. Ilyen "hiba" pl. az, hogy ha adott esetben egy memóriacímen lévő integerrel kell műveletet végezni, akkor az első, hogy a címről az értéket beolvassa a gép az egyik munkaregiszterébe, majd a művelet elvégzése után az eredményt kírja arra a memóriacímre, ahonnan az előbb beolvasott. Ha a következő lépés mondjuk az, hogy ugyanazzal a változóval kell végezni egy másik műveletet, akkor a kiírt értéket megint be kell olvasni a munkaregiszterbe, holott az az előbb még ott volt.
Nyilvánvaló, hogy jobb lenne az értéket a regiszterben hagyni, mivel így két adatmozgató utasítással rövidebb és persze gyorsabb is lenne a program. Na, a f"csak értelmezni kellene, amit írtam, azon belül is az "optimális" szó jelentését."
Értelmeztem, így derült ki, hogy dilettáns vagy.
A forráskód egy, a compiler szintjénél magasabb absztrakciós szint produktuma. Így ahhoz kb. semmi köze nincs.
A compiler értelmezi és fordítja le gépi kódra a forrást. Ha igény van rá, akkor optimalizálja is.
Ami annyit tesz, hogy A SAJÁT MUNKÁJÁT valósítja meg másképpen, nem pedig a forráskódba "javít" bele.
Az optimalizáció történhet sebességspecifikusan, de úgy is lehet optimalizálni, hogy a program a lehető legkevesebb memóriát használja.
Ekkor persze a viszonylagos lassúsággal "fizet" az, aki futtatni kivánja a programot.
Az optimalizálás ott kezdődik - hátha te is megérted - hogy a fordító nem a program írója, hanem a saját "hibáit" javítja ki.
Ilyen "hiba" pl. az, hogy ha adott esetben egy memóriacímen lévő integerrel kell műveletet végezni, akkor az első, hogy a címről az értéket beolvassa a gép az egyik munkaregiszterébe, majd a művelet elvégzése után az eredményt kírja a
memóriacímre, ahonnan az előbb beolvasott. Ha a következő lépés mondjuk az, hogy ugyanazzal a változóval kell végezni egy másik műveletet, akkor a kiírt értéket megint be kell olvasni a munkaregiszterbe.
Nyilvánvaló, hogy jobb lenne az értéket a regiszterben hagyni, mivel így két adatmozgató utasítással rövidebb és persze gyorsabb is lenne a program. Ha a fölösleges lépések kimaradnak, az a jó, mert ilyen fölösleges lépés, lehet egy összetettebb programban akár több ezer is. Hát ilyesmi a kód-optimalizálás, legalábbis alapfokon.
És ennek persze a világon semmi köze nincs ahhoz, hogy amatőr atanász, vagy vérprofi vendel írta a kódot, mivel a fordítót biztos, hogy nem ők írták.
Nem optimalizálásról beszéltem, hanem optimálisra megírt forráskódról.
Ha értelmezted volna és tisztában lennél az "optimális" szó jelentésével, akkor fejedhez csapnál, hogy az optimális programkód egy idealizált állapot, a valóságban aligha valósítható meg. Ebből aztán következik, hogy a program fordítása eredményezhet sebességbeli különbségeket. Nem feltétlenül nagyokat, lehet, hogy csak nüansznyikat. Ha csak elméletben nézzük (és a kérdés elméleti kérdés volt), akkor a válasz tehát ebből következően az, amit eredetileg leírtam, hogy optimális kód esetén nem lehet eltérés.
További 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!