?
volkard schrieb:
Erstmal mache ich aux [x][y] das [y][x], wie dichter am nativen float[][] ist.
Geschwindigkeitsmässig dürfte sich da nichts ändern, aber du hast Recht; hier verhält sich meine Matrix nicht wie ein float[][] , das dürfte nicht vor kommen.
volkard schrieb:
Dann mache ich bei volkard den Index zum size_t statt float.
Oh, ein echter Bug. Das wird vermutlich der Grund für "dein" schlechtes Abschneiden in meinem Test sein.
volkard schrieb:
Und ich ziehe den wichtigen data-Zeiger vor, damit er erstes (und im Zweifelsfall schnellstes) Attribut ist.
Ganz ehrlich: das war ein (wieder mal zu früh umgesetzer) Trick um die c::matrix auszubremsen. Hier habe ich jedoch nicht wirklich tief nachgedacht, den das trifft ja alle gleich stark.
volkard schrieb:
Hmm.
Bei meinem Compiler (g++ (Debian 4.4.5-8) 4.4.5) tritt der Vergleich weniger krass zu Tage - volkard unterscheidet sich an zwei Assemblerbefehlen von parashift, dilkard hat einen Befehl mehr - aber dass meine handoptimierte Matrix nicht nur gleichauf, nein sogar schlechter abschneidet als deine, das gibt mir zu denken.
volkard schrieb:
Und nicht zuletzt, es gefällt mir einfach, wenn der Proxy nur Proxy ist. So würde ich es auch machen, wenn das Compilat nur geringfügig langsamer wäre. Es ist typisch für mich, daß ich hübsche Sachen auch stehen lasse, wenn sie prinzipiell gut optimierbar sind, aber ich für den vollen Spaß noch eine oder zwei neue Compilerversionen abwarten muß.
Naja, ob der Proxy jetzt hübsch oder unschön ist, ist mir relativ egal, da der Benutzer es nicht mitbekommt/mitbekommen sollte. In klasseninterner Implementierung steht die Eleganz immer unter der Performanz, solange das Interface nicht darunter leidet (und das tut es bei der parashift-Methode).
Wenn ich aber weiss, dass eine volkard-Matrix besser ist, als meine jetzige, werde ich das in Zukunft berücksichtigen.
Stört mich nur noch eins: boost::multi_array<float, 2> ist 11 mal langsamer als dilkad.
Jetzt, da meine eigenen Code-Fehler ausgemerzt sind, kann ich dir nur zustimmen:
volkard schrieb:
Der Compiler hat mich wiedermal nicht enttäuscht.