On Thu, 11 Apr 2002 17:13:52 +0200, Jens Weiße wrote:
angeregt durch die Diskussionen zur Softwarebeschleunigung habe ich ein bisschen mit den Compileroptionen experimentiert. Jedoch bringt nur die Option -O3 einen Geschwindigkeitsgewinn. Ansonsten ist das Programm für den 486 genauso schnell wie das für den 686.
2m1.527s # kein Optimierung
-O3 1m28.125s -O3 -Di586 1m28.700s -O3 -Di686 1m28.189s
Sind die Optionen für den Pentium und höher nur Dummies, oder liegt das an dem sehr einfach gestrickten Programm?
-Di586 hat nicht direkt was mit dem Compiler zu tun. Es definiert nur das Symbol i586, wodurch u.U. im Code per #ifdef eine angepaßte Variante aktiviert wird.
vielen Schleifen mit noch mehr Funktionsaufrufen nur einige Winkelfunktionen und Wurzeln aus. Vermutlich bringt eine Verbesserung des Codes mehr als ein $Wundercompiler, aber davon habe ich _keine_ Ahnung.
Such einfach mal das Stück Code, was durch -Di586 aktiviert wird. Das wird wohl die innere Schleife sein, auf die es ankommt. Eventuell ist das Stück schon is asm geschrieben. Dann bringt der Compiler nix mehr.
Ist es noch C-Code wäre ein Versuch mir Intels C-Compiler zu empfehlen. Winkelfunktionen und Wurzeln sind FPU-Zeugs. An der Stelle ist der gcc vergleichsweise schlecht. (Ich erinnere mich an einen c't/iX-Artikel, bei dem povray mit intels cc genau doppelt so schnell war im Vergleich zum gcc-Output. Alledings auf P4. Keine Ahnung, wie athlonfreundlich Intels cc ist.)
Reinhard