| |
|
|
| Hm mir kommt vor, die Highlevel Loops des MASM32-8/9 sind doch um Einiges langsamer als händisch programmierte... Gleiches gilt für die Verwendung des REP (=repeat) Vorsatzes bei den neuen CPU-Befehlen... Hat jemand ähnliche Erfahrungen gemacht, oder muss ich da irgendwelche Optimierungsflags einschalten? |
|
|
| |
|
|
|
| Es kommt darauf an, wie hoch du den Stack absichert usw.ist eine wesentliche Beeinflussung.
Was meinst du, wofür die Optimierungsschalter sind??? für das Compilieren.
mfg |
|
|
| |
|
|
|
| Ähm... Bitte wie sichere ich den Stack ab? Das sollte doch nur 1x passieren, beim Start der Schleife, und damit zeitlich nicht ins Gewicht fallen! Oder heißt das, die MASM-Macrobefehle sichern ständig Zwischenergebnisse auf den Stack? |
|
|
| |
|
|
|
Frank Abbing |
Hm mir kommt vor, die Highlevel Loops des MASM32-8/9 sind doch um Einiges langsamer als händisch programmierte...
Das liegt ja daran, wie der Assembler die Loops umsetzt. So eine Standard-Übersetzung kann ja nie so gut sein, wie eine von Hand erstellte Schleife, die auf den jeweiligen Code in der Scheife optimiert wird. Z.B. wird das benutzte Zähl-Register auf den Stack gerettet und später wieder verwendet. Das brauchst du in der von Hand programmierten Schleife nicht zu machen, wenn das Register ansonsten unbenutzt ist.
Gleiches gilt für die Verwendung des REP (=repeat) Vorsatzes bei den neuen CPU-Befehlen...
Hm, REP ist ja recht angestaubt. Ich selber verwende es eigentlich nie.
Oder heißt das, die MASM-Macrobefehle sichern ständig Zwischenergebnisse auf den Stack?
Vermutlich, ja. Wie oben schon beschrieben. Ist ja auch sinnvoll, weil du so auf kein Register verzichten musst. |
|
|
| |
|
|
|
| Darum die Frage, ob man das Optimierungsziel des MASM irgendwie auf "speed" statt auf "universelle Registerverfügbarkeit" setzen kann. Wäre schade wenn das nicht geht, der Geschwindigkeitsgewinn wäre nämlich erheblich. In der Hilfe hab ich bisher aber nix dazu gefunden... Gruß Peter S. der ältere |
|
|
| |
|
|
|
Frank Abbing | Hm, da müsstest du mal nach entsprechenden Schaltern für die ML.exe suchen, so aus dem Kopf wüsste ich da nichts. Ich selber habe auch nicht festgestellt, dass der Geschwindigkeitsverlust dermassen rapide wäre. Der MASM32 Assembler wird von Steve Hutchesson weiter entwickelt, einem Assemblerfreak, bei dessen Erwähnung seines blossen Namens ich schon in blanker Ehrfurcht im Boden versinken möchte ob meiner eigenen bescheidenen Asm-Kenntnisse. Du könntest mal einen Testcode von dir posten, vielleicht versteckt sich ja nur ein simpler Zähl-Fehler darin. |
|
|
| |
|
|
|
| Auch eine Fundgrube dazu: [...] Insbesondere das timing-programm [...] Wie man an die Switches kommt, sagt uns unter punkt 6: [...] nämlich mit ml /? > ML.TXT in einer DOS-Box. Ergebnis für meinen MASM 9 anbei. Zur Speedoptimierung muss ich mich da (bei /Sc ?) aber erst mal reinlesen... Ausserdem scheint schon Masm-SDK Version 10 da zu sein: [...] Gruss |
|
|
| |
|
|
|
| Hm, keine Option in Richtung Geschwindigkeitsoptimierung gefunden... Bleibt wohl echt dem User überlassen, sich in die Maschinerie der jeweiligen CPU einzuarbeiten. Und die ist heutzutage so kompliziert wie eine Kleinstadt... Aber eines versteh ich jetzt: Warum die Benchmarks von Herstellern so "super" sind: Wird alles händisch optimiert! |
|
|
| |
|
|