Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
killmichnich
unregistriert
Wie schon angetönt solltet ihr nicht nur überlegen, sondern messen. Nehmt einen Profiler zur Hand und schaut, was die meiste Rechenzeit braucht. Einfache Zeitmessungen tuns zur Not auch. Auf jeden Fall sind Fakten besser als Vermutungen, besonders bei Mikrooptimierungen.Zitat von »"killmichnich"«
Und da ist jetzt unser Problem, dass das Ding immer langsamer wird, und wir uns überlegt haben, ob wir nich Rechenzeit einsparen können indem wir einfach Variablen verkleinern, weil wir meistens eh nur Werte bis 255 brauchen.
killmichnich
unregistriert
Zitat von »"killmichnich"«
Edit: Und es ging auch darum, dass ja das Dividieren anscheinend länger zum rechnen braucht, als der Rest, weswegen wirs eben iwie schaffen wollten, nur bis x stellen nach dem komma zu rechnen, damit das nicht zu genau wird und länger braucht?
C-/C++-Quelltext |
|
1 2 3 |
int a = x / 2; // sehr nett :D int a = x * 0.5; // definitiv schneller int a = x >> 1; // auch schnell |
idontknow
unregistriert
Ah, weil Multiplikation keine Grundfunktion ist? :pZitat von »"idontknow"«
Standardmäßig kann die CPU bestimmter Microcontroller weder multiplizieren noch dividieren, ist also keine Grundfunktion die die ALU beherrscht!
Daher würde ich dividieren mit Multiplikation umgehen sollte deutlich schneller sein!
killmichnich
unregistriert
Zitat von »"Nexus"«
(statt halbieren mit 1/2 multiplizieren).
Zitat von »"killmichnich"«
Zitat von »"Nexus"«
(statt halbieren mit 1/2 multiplizieren).
Macht der Prozessor da wirklich nen Unterschied?
Ich bin mal davon ausgegangen, dass wenn ich was durch 2 teile das genauso lang braucht als würd ichs mit 0.5 multiplizieren? ôO
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Vec3& operator/=( float f ) { // sonderfall wenn f == 0 beachten... float invf = 1.0f / f; x0 *= invf; x1 *= invf; x2 *= invf; // ... return (*this); } |
Werbeanzeige