[Elméleti kérdés] 2 processzorral meglehetne ezt valósítani?
Ezért találták ki a mutatókat (aka. pointereket). Egyszerűen csak azt cserélik meg, hogy melyik információ hol található a memóriában.
Amúgy meg a mai memóriák cseszett gyorsak, hogy egy ilyen kiakassza.
Mi köze a memóriaigénynek a processzorok számához?
Kicsit kezdő vagy még ehhez a kérdéshez.
Hmm nos először is egy "int" mindig ugyanannyit foglal a memóriában.
Tehát pl
int a = 1
int b = 1000000000
Akkor a pontosan annyi helyet foglal a memóriában, mint b (16 bitet).
Amúgy nem kell segédváltozó, hogy 2 intet felcserélj:
a = a ^ b; b = a ^ b; a = a ^ b;
Már megint ez a XOR megoldás... Jó pofa de lassabb mint a sima segédváltozós. Egyrészt a segédváltozós megoldást a fordító kioptimalizálja egy swap operátorra, másrészt nincs olyan XOR operátor x86 CPU-kon aminek a két operandusa memória cím lenne. Érthető is mert a CPU sín fél duplex, egyszerre csak vagy írni vagy olvasni tud, de nem mind a kettőt.
Ha fel akarsz cserélni memória blokkokat akkor felcseréled a pointereket és a probléma meg van oldva. Ha nem lehet így megoldani, akkor sem eszik meg a csere sok memóriát mert egyenként cseréled az adatokat. Nincs a sima segédváltozós megoldásnál gyorsabb megoldás, ha trükközöl, azzal csak átvered az optimizert!
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!