Optimierung, gehts noch was?
-
Oder vielleicht so:
bool isIdentity (void) { for (__int32 i=1; i<4; ++i) for (__int32 j=0; j<i; ++j) { if (fabs((*this)(i,j)) < 0.0000001f || fabs((*this)(j,i)) < 0.0000001f) return (false); } for (__int32 i=0; i<4; ++i) { if (fabs((*this)(i,i)-1) < 0.0000001f) return (false); } return (true); }
Sind aber bestimmt noch Fehler drin. Und ob es dadurch schneller wird?
-
http://www.cuj.com/documents/s=8231/cuj0302bik/
Wenn du wirklich Micro-Optimierung betreiben willst, befasse dich am besten erstmal mit den Dokumenten, die dein Compiler-Hersteller und Hersteller deines Ziel-Systems zur Verfügung stellen.
-
fubar schrieb:
Oder vielleicht so:
...fabs...fabs sieht für mich sehr schnell aus.
vielleicht noch die ifs wegmachen, indem man gegen eine bereits existierende idetityMatrix elementweise vergleicht.
-
wenn ich das richtig sehe, kommt es auf die genaue grösse des erlaubten fehlers nicht an. möglichweise ist daher so etwas auch vertretbar:
bool isIdentity (void) { return fabs((*this)(0,0)-1.0f)+fabs((*this)(0,1))+fabs((*this)(0,2))+fabs((*this)(0,3))+ fabs((*this)(1,0))+fabs((*this)(1,1)-1.0f)+fabs((*this)(1,2))+fabs((*this)(1,3))+ fabs((*this)(2,0))+fabs((*this)(2,1))+fabs((*this)(2,2)-1.0f)+fabs((*this)(2,3))+ fabs((*this)(3,0))+fabs((*this)(3,1))+fabs((*this)(3,2))+fabs((*this)(3,3)-1.0f)<0.000001f; }
vektorisierung ist nat. auch denkbar, wenn der () operator das erlaubt.
-
Ponto schrieb:
Wahrscheinlich ist es sinnlos in dem jetzigen Stadium schon zu optimieren.
Toll nachgeplappert... Woher willst du wissen in welchem Stadium sich sein Code befindet?
-
MaSTaH schrieb:
Ponto schrieb:
Wahrscheinlich ist es sinnlos in dem jetzigen Stadium schon zu optimieren.
Toll nachgeplappert... Woher willst du wissen in welchem Stadium sich sein Code befindet?
Deshalb hab ich "wahrscheinlich" geschrieben. Es ist meiner Meinung nach wahrscheinlicher, dass es sinnlos ist zu optimieren, als andersherum.
-
Du hast dich dabei aber auf das Stadium der Enwicklung bezogen obwohl du selbiges offenbar nicht kennst. Wahrscheinlich ist auch, dass jemand wirklich nachgemessen hat, dass dieser Code Teil eines Bottlenecks ist und eine Hilfe bei der Optimierung sucht. Zumindest sollte man diese Möglichkeit nicht von vorne herein ausschließen.
-
Hallo,
was bedeutet das denn bitte?
{ if (fabs((*this)(i,j))... // *this ?
So eine Schreibweise hab ich noch nie gesehen. Kann mir das wer erklären?
-
Würde dir
fabs(this->operator()(i, j))
besser gefallen?
-
Noch nen kleinen Tipp der Code wird nicht langsamer wenn man whitespaces benutzt :p
-
SirLant schrieb:
Noch nen kleinen Tipp der Code wird nicht langsamer wenn man whitespaces benutzt :p
wenn du dich zu tode scrollen willst...
das edit fenster hier ist schon winzig genug. du hast nat. völlig recht.
-
SirLant schrieb:
Noch nen kleinen Tipp der Code wird nicht langsamer wenn man whitespaces benutzt :p
Doch, wenn du den whitespace-Operator überladen hast u.U. schon
.