Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Hm. Ohne Schleifen, heißt das, mit SSE/MMX oder hast du einfach die Operationen normal untereinander geschrieben? Denn eigentlich rollen compiler statische Schleifen recht gut aus, sodass der Code im Quelltext gut aussieht, aber halt keine Schleife verwendet. Hast du mal mittels ggc -S (-S lässt den temporären ASM-Code bestehen, sodass du ihn dir anschauen kannst; falls du überhaupt gcc benutzt) geschaut, ob er dir die Schleifen ausrollt?
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Ich hab einfach die Operationen untereinander geschrieben. SSE/MMX nutze ich nicht um sicher zu sein, dass es überall läuft. Gut möglich, dass der Compiler statische Schleifen optimiert, ich hab mir das nicht näher angeguckt. Wenn er aber optimiert, wird er das nicht besser hin bekommen als das bei mir der Fall ist und Lesbarkeit ist bei mir durch sinnvolles Einrücken auch gegeben. Und ich behaupte auch gar nicht das meine Library das Non-Plus-Ultra ist....ich habe hier im Forum halt nur immer wieder Teile gepostet...da wollte ich das mal als ganzes veröffentlichen.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2621 Wohnort: Berlin
Programmiersprache: Go, C/C++
Unter gcc kannst du die vector extension verwende, damit du auf die sse1-4,mmx und 3dnow zugriff hast. Diese hab ich in RadonFramework auch mit eingebaut aber so viel power bringt das nicht. Ich hab letztens eine SphereSphereIntersection benchmark gebastelt und bin mit sse3 auf 600.000 Intersections und ohne auf 560.000(fpu) Intersections gekommen. Allerdings nur auf 1 Kern, mit Parallelisierung bekommt man viel mehr raus, bei 6 kernen hatte ich noch knapp 3.400.000 Intersections. Also bei einfachen dingen ist sse und co nicht so interessant, nur bei komplexen Operationen lohnt es sich.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mir ist aufgefallen, dass der Konstruktur für die Matrix44 mit Up-, Front- und Positionsvektor auskommentiert ist. Nachdem ich ihn dennoch getestet habe, gab es ein paar Darstellungsfehler. Ich habe den Code danach etwas verändert:
Code:
Vector3<T> vLeft;
vUp.normalize();
vFront.normalize();
vLeft = -(vFront % vUp);
vLeft.normalize();
vFront = -(vUp % vLeft);
Damit scheint es zu funktionieren. Vielleicht hilft es dir
Das ganze war Copy&Paste aus einer noch älteren Version. Ich hatte damals nur gesehen, dass es nicht mehr funktionierte und keine Zeit selbst zu probieren. Thx.
Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.