Mam klasę wektorową 3D. Zmienne prywatne są zdefiniowane:Porównanie pamięci, która jest szybsza?
union { struct { double x; double y; double z; }; double data[3]; };
Realizując operator ==, który jest szybszy?
return this->x == v.x && this->y == v.y && this->z == v.z;
LUB
return memcmp(this->data, v.data) == 0;
Użyłem unii, więc mogę po prostu przekazać 'dane' do API stron trzecich, które wymagają' podwójnego * '. – Anthony
@Stephen - bezpośrednie zapamiętywanie struktury może być ryzykowne. Jeśli kompilator wstawi dopełnienie, struktury mogą się różnić, mimo że wszystkie pola są takie same. –
@R Samuel: Dzięki, dobry punkt. _comment withdrawn._ :) – Stephen