koszt rzutowania wskaznikow

0

Witam :)

Czy rzutowanie wskaznikow pociaga za soba jakies koszty w sensie wykonywania dodatkowych instrukcji, allokacji dodatkowej pamieci itp.? Oczywiscie chodzi mi o kod po skompilowaniu.

Czy na przyklad: taniej jest zaalokowac nowa zmienna i raz do niej zrzutowac inna zmienna do wykorzystania pozniej, czy rzutowac wiele razy, bez tworzenia nowej zmiennej? Kwestie czytelnosci kodu pomijam.

Czy sytuacja bardzo sie rozni w przypadku rzutowania roznych typow (np. liczbowych) a w przypadku rzutowania wskaznikow do roznych typow?

Czy moze zalezy to od jezyka?

Dziekuje i pozdrawiam

0

Wszystko zalezy od tego o jakie rzutowanie Ci chodzi. Wszystkie rzutowania maja zerowy narzut pamieciowy. Co do narzutu czasu wykonania:

(Typ)Zmienna - zerowy
reinterpret_cast<Typ>(Zmienna) - zerowy
static_cast<Typ>(Zmienna) - zerowy
const_cast<Typ>(Zmienna) - zerowy
dynamic_cast<Typ>(Zmienna) - zwykle od 1 do 5 razy tyle co narzut wywolania f. wirtualnej w porownaniu ze zwykla... Czyli b. niewielki narzut jest.

To nie wprowadza praktycznie narzutu (no moze jeden opcode na skopiowanie wskaznika pojdzie):

Typ* zmienna = static_cast<Typ1*> (costam_innego_typu)
// tu uzywasz zmiennej zmienna w wielu poleceniach

W Javie wszystkie rzutowania () sa typu dynamic_cast<>. I m.in. dlatego Java dziala troszke wolniej (ale to nie jedyny powod).

0

Bardzo dziekuje :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1