Létezik olyan fordítói direktíva, vagy fordítónak paraméterként megadott érték, amely úgy optimalizálja a programot, hogy bizonyos dolgok gyorsabban hajtódjanak végre? (bővebben lent)
Free Pascal-ban írt program esetén kellene a megoldás, olyan műveletekre gondolok, mint például tömbökben adott elem keresése és más tömb elemeihez való hasonlítása, csere, rendezés. Létezik ilyen "optimalizálás" vagy nem igazán?
Esetleg ha C-be át lenne írva az egész, akkor optimális lehetne a sebesség, vagy abban nincs különbség, hogy a két programnyelv közül melyik fordítója állít elő jobban optimalizált kódot?
Normális, hogy mai korszerű számítógépeken a sima rendezési algoritmus is hajlamos belassulni Free Pascal esetén akkor is ha csak párszáz elemű a tömb?
Sima rendezési algoritmus alatt azt értem, hogy:
for i:=0 to n-1 do
begin
for j:=i+1 to n do
begin
...
Tehát ilyen műveletek "felgyorsítására" gondolok...
Jaa és ha lehet ne menjen el abba az irányba, hogy "ja, talán ha a hiperszuperultragyors rendezési algoritmust használnád, akkor gyorsabb lenne", mert nem kizárólag rendezési algoritmusok felgyorsítására gondoltam, hanem memóriában lévő tömbökkel történő műveletekre
Jaa, esetleg hasznos tanácsok is érdekelnek, amelyek szintén gyorsíthatják a program működését, például mondok egy példát hogy milyen tanácsokra gondolok: "az ilyen tömbökkel való műveleteket rakd külön eljárásokba"...
"i:=i+1" helyett használd az inc(i) parancsot a változó értékének növelésére...
Erről például sok éve azt mondta nekem egy programozó, hogy sokkal gyorsabb...
Vannak fordító direktívák, melyek sebességre, vagy fájlméretre optimalizálnak, de azért csodát ne várj tőlük.
Ha kevés adat esetén is lassú a programod, akkor ott más baj lesz, amit a fordító nem fog tudni megoldani. És bármennyire is nem akarod hallani / tudomásul venni, akkor is sokat számít az általad írt algoritmus. Ha jobb algoritmust írsz gyorsabban fog futni.
A különféle CPU optimalizálási lehetőségek sokat számítanak vagy max pár másodpercet lehet nyreni vele? Meg pl. a smart linked units opció kikapcsolása hogy a bináris kisebb legyen...
Értem hogy gyorsabb lesz ha mondjuk más algoritmust használok, de hihetetlen hogy ma is probléma olyan egyszerű művelet mint pl. a rendezés... Mármint a mai sebesség meg dualcore mellett...
Látom van olyan opció is hogy különféle assembler-eket használjona fordító, nem tudom ezzel érdemes -e foglalkozni.
Nagyon köszönöm a választ, el fogom olvasni.
Ha C-be át tudnám írni és GCC-vel fordítanám, esélyes hogy sokkal gyorsabb lenne, mivel több platformra van C, a fordítóját gyakran kiadják, hibákat javítanak benne, stb? Laikusként arra gondoltam, hogy esetleg jobb kódot állít elő.
"hihetetlen hogy ma is probléma olyan egyszerű művelet mint pl. a rendezés"
Egyáltalán nem probléma, ha sok elem van, belassul, ez ilyen. (ha nem tetszik, találj ki jobb algoritmust, meglátod, hogy nem fog menni)
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!