Was ist schneller?
-
Hi,
was von diesen beiden Methoden ist schneller und warum?
void CMatrix::zero (void) { this->_11 = this->_22 = this->_33 = this->_44 = this->_12 = this->_21 = this->_31 = this->_41 = this->_13 = this->_23 = this->_32 = this->_42 = this->_14 = this->_24 = this->_34 = this->_43 = 0.0f; } void CMatrix::zero (void) { for (int i=0; i<16; ++i) this->matrix[i] = 0.0f; } // ... class CMatrix { public: void identity (void); union { struct { float _11, _12, _13, _14; float _21, _22, _23, _24; float _31, _32, _33, _34; float _41, _42, _43, _44; }; float matrix[16]; }; };
-
[loool]
@alle:
hab was übersehen :~) !
-
Vermutlich die erste, weil keine Arithmetik notwendig ist.
-
Optimizer schrieb:
Vermutlich die erste, weil keine Arithmetik notwendig ist.
aber sicher nicht?
@BlueShift
wie aha? noch nie gemacht oder wat?
-
hätte da auch noch eins fürs rennen.
ich vermute mal das ist das schnellste. bin mir aber nicht sicher.
ist zumindest wenig schreibarbeit.memset(matrix, 0, sizeof(CMatrix));
-
miller_m schrieb:
memset(matrix, 0, sizeof(CMatrix));
sizeof(matrix) bitte, sonst machts BUMM
@OP:
lass doch das hässlich this weg...
-
@Shade Of Mine
wozu? Ich sehe darin keinen Nachteil, sondern eher einen Vorteil, da man schneller erkennen kann wo eine Variable aus der Klasse selbst benutzt wird.
-
[EDIT] war käse... [/EDIT]
wozu?
weil sizeof(matrix) =! sizeof(CMatrix)
-
ich vermute das dein compiler aus beiden genau das gleiche macht.
aber teste doch einfach was schneller ist indem du es ein paar millionen mal aufrufst und die zeit misst?