So... nachdem das Jahr programmiertechnisch eigentlich ereignislos war (bis auf die Tatsache, dass wir proggen.org nach endlosen Vorbereitungen quasi neugeschrieben und umgezogen haben ^^) habe ich mich am Sonntag erstmals wieder an den Computer gesetzt, einfach um mal wieder etwas Spaß zu haben. Und damit auch an dieses Projekt, mich wieder eingelesen, ein paar Bugs entfernt und heute den erstmals seit Ewigkeiten wieder eine Kleinigkeit hinzugefügt: Eine kleine, aber feine Optimierung zum Addieren und Subtrahieren von Werten: Inc und Dec, bzw. Werte können direkt mit add und sub addiert werden. Vorher konnte der Renderer nur Register addieren und subtrahieren, der Wert musste also erst in ein Register geladen werden und dann wurde der geladene Wert aus dem Register verrechnet.
Das wirkt sich aus: von 0,029 Sekunden geht's runter auf 0,024 Sekunden.
Das sind nur 0,005 Sekunden. Oder eben 17%. 17% ist heftig. ^^
Womit die Konkurrenz zu Java wieder interessant wird...
Code: Alles auswählen
Java Genesys C (optimiert)
fib(30): 0,170s 0,024s 0,013s
fib(35): 0,262s 0,137s 0,079s
fib(40): 1,181s 1,383s 0,767s
fib(45): 10,657s 13,708s 7,649s
Was interessant ist... ich bekomme die ursprüngliche Zeit von fib(30) mit 0,139s mit Java nicht mehr bestätigt!? Hatten wir ein Java-Update bzw. Downgrade?
Anyway, ich vermute, ich habe möglicherweise noch eine größere Bremse im JIT-Compiler. 30% müssten also auch noch zu machen sein, C zeigt schließlich an, wo die Meßlatte am Ende zu hängen hat. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.