Ho una classe vettoriale 3D. Le variabili private sono definite:Confronto di memoria, che è più veloce?
union { struct { double x; double y; double z; }; double data[3]; };
Nell'implementazione dell'operatore ==, che è più veloce?
return this->x == v.x && this->y == v.y && this->z == v.z;
O
return memcmp(this->data, v.data) == 0;
Ho usato l'unione in modo da poter passare 'dati' a API di terze parti che richiedono un' double * '. – Anthony
@Stephen: la memorizzazione diretta di una struttura può essere rischiosa. Se il compilatore inserisce padding, le strutture possono essere diverse anche se tutti i campi sono uguali. –
@R Samuel: Grazie, buon punto. _comment withdrawn._ :) – Stephen