wpc117
-
wzf????
wenn ich das letzte referenzprog mit meiner lösung laufen lasse, ergeben sich interessante schwankungen:
mit cin.get() nach dem letzten printf ca. 1.3
ohne hab ich ca. 1.1...
-
Bin mittlerweile auf durchschnittlich 1.35 gekommen und habe dabei etwas völlig Verrücktes festgestellt... zeige ich Euch, wenn der Contest vorbei ist
-
TomasRiker schrieb:
Und wie sieht es bei VC++ aus?
Immerhin benutzen die, die den Contest veranstalten, ebenfalls VC++.wär praktisch, wenn einer von euch Windows/VC++ Besitzer so ein Webfrontend einrichten würde, wie das der Comeau C++ bietet
-
Mal schauen, vielleicht kann ich ja was basteln
Langsam zweifle ich an dem Compiler.
Es ist total komisch... ich habe hier folgende Situation: ich habe eine Codezeile optimiert. Nun ist das Programm schneller, wenn ich sowohl die optimierte als auch die ursprüngliche Zeile (die genau dasselbe tun) hintereinander stehend drinlasse. Nehme ich eine von beiden raus, ist das Programm direkt langsamer. Diese zweite Zeile ist wirklich absolut überflüssig, aber das Programm wird dadurch ca. 10% schneller...
-
TomasRiker schrieb:
Langsam zweifle ich an dem Compiler...
hatte beim letzten wpc ähnliche effekte, aber nur um 4%. es schient echt daran zu liegen, welcher (von gemessenen code völlig unabhängiger code!) vor meiner funktion stand.
ich tippte auf alignment. also daß die ganze funktion nicht optimal aligned ist.
ist ja ach eigentlich logo, ich habe meinem compiler noch gar nicht verraten, daß er für meinen prozessor optimieren soll. der denkt bestimmt, ich hätte nur nen 386-er drin. ob der überhaupt schon alignentprobleme kannte?
-
Interessant... bei mir wäre es dann wohl so, dass Teile innerhalb der Funktion nicht aligned sind. Das müsste ja bedeuten, dass ich die überflüssigen Assembler-Instruktionen durch irgendwas anderes ("nop") ersetzen könnte.
-
TomasRiker schrieb:
Interessant... bei mir wäre es dann wohl so, dass Teile innerhalb der Funktion nicht aligned sind. Das müsste ja bedeuten, dass ich die überflüssigen Assembler-Instruktionen durch irgendwas anderes ("nop") ersetzen könnte.
Ich weiß ja nicht mit welchen Settings die das beim Contest erledigen, aber sowas lässt sich imho in den Projekteinstellungen des Projekts automatisch bewerkstelligen
Solange du über einen MSVC der Prof bzw. Enterprise Edition besitzt.
MfG SideWinder
-
Wo kann man das einstellen?
Ich habe die Enterprise Architect-Version (nein, nicht illegal!).
Habe nun allerhand Einstellungen getestet, aber die Variante, wo sinnloserweise mehr Code ausgeführt wird, ist immer noch die schnellste.
-
Unter C++ -> Kategorie: Code-Generation.
Prozessor: Pentium Pro (falls du dann die Option /GB noch nicht gesetzt hast (siehe Feld unten mach das stattdessen)
Elementausrichtung: Siehe in deinen CPU-Specs nach was am besten für dich ist.
Funktionsaufruf: __fastcall
Laufzeitbibliothek: MultithreadedUnter C++ -> Kategorie: Optimierungen
Optimierungen: Geschwindigkeit erhöhen
Eingebette Funktionswerweiterung: Jede geeigneteUnter C++ -> Kategorie: Programmiersprache C++
Ausnahmebehandlung aktivieren: Deaktivieren
Das kannst du mal bereits im Menü einstellen, dann bleiben dir noch ein paar Einstellungen die du direkt über Präprozessordirektiven an den Linker weitergeben kannst:
/ALIGN:Zahl Alignment eines Abschnitts festlegen
Aber wie gesagt, wer weiß ob die das überhaupt zulassen, die werden deinen Code auf Standardeinstellungen testen, also lieber selbst sinnlosen Assemblercode hinzufügen.
Dumm nur, wenn die plötzlich andere Einstellungen haben als du
Da kommt mir, du könntest alle Befehle über pragmas an compiler bzw. Linker weiterleiten, dann haben die das auch weil die Einstellungen die du dem Präprozessor gibst sich über die Projekteinstellungen drüberkopieren. Die genauen Befehle findest du unter Compiler bzw. Linker in der MSDN.
MfG SideWinder
-
Super, danke für die Info!
Jetzt ist er nämlich ohne den sinnlosen Code schneller und schafft maximal 1.7...
-
Komme mit dem VC++ (Version 6 wohlgemerkt) auf schlappe 1.3, aber ohne irgendwelche Alignmenteinstellungen.
-
Ohne zusätzliche Compilereinstellungen komme ich auf 1.45.
Mit Einstellungen auf 1.7.