C vagy Pascal nyelven gyorsabbak a tömbműveletek, tömbelemekhez való hozzáférés sebessége?
Nagyon köszönöm mindenki hasznos válaszát.
Én már többször is hasonlítottam össze Pascal-ban a statikus és a dinamikus tömb sebességét és meglepődve tapasztaltam, hogy a dinamikus sokkal lassabb. Azt hiszem, statikus tárolás=stack, dinamikus tárolás=heap, hogy sebességgel miképpen függ össze, nem tudom.
Ha a pointerekre gondolnak összehasonlítás terén, úgy gondolom, hogy a dinamikus tömb pointerekből áll - még ha konkrét mutatót nem is használnak - és meglep, hogy e lassabb sebesség képezi az összehasonlítás alapját. Bár ha C nyelven csak dinamikus tömb létezik akkor ez nem is annyira meglepő.
"a dinamikus sokkal lassabb"
A memóriafoglalás szokott lassabb lenni (bár ez malloc implementációtól függ, Gugli: malloc implementations). A memória elérésében nem szabadna nagy különbségnek lenni, a dinamikus tömb címe szimpla cím, a stack-en pedig a stack-pointerhez képesti relatív cím, de az minimális műveleti időt jelent.
"a dinamikus tömb pointerekből áll"
Abból áll, amivel feltöltöd. Ha pointerekkel töltöd fel, abból áll, ha int-ekkel, akkor abból, stb. Ez igaz a heap-en, stack-en, mindenhol.
"ha C nyelven csak dinamikus tömb létezik"
Nem csak az létezik.
Köszönöm a választ.
Dinamikus tömb esetén a tömb elérésében mutatkozik jelentős eltérés.
..Bár alap esetben a Free Pascal elvileg nem generál range checking kódot.
Legújabb fpc fordítónál is gyorsabb a statikus tömb elérése mint a dinamikus.
Az alábbi nyakatekert kódot sikerült alkotni (valószínűleg rövidebbel is ment volna a demonstráció):
Jaa és azért "longint" típusú a tömb, mert az gyorsabb, mintha byte típusú lenne.
A kódért meg elnézést.
Több doloog is van, amit nem jól csinálsz.
Amúgy, igen, a statikus tömb elérése mindig is gyorsabb lesz a dinamikusnál.
A freepascal fordítója egy remek, nagyon sokoldalú fordító de éppen a sebességben nem jeleskedik.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!