Gibt es eine Methode, automatisch die besten Compiler-Optionen (auf einer bestimmten Maschine) zu finden, die zu der schnellstmöglichen ausführbaren Datei führen?Automatisch finden Compiler-Optionen für schnellste exe auf bestimmten Rechner?
Natürlich verwende ich g++ -O3
, aber es gibt zusätzliche Flags, die den Code möglicherweise schneller laufen lassen, z. -ffast-math
und andere, von denen einige Hardware-abhängig sind.
Kennt jemand Code, den ich in meine configure.ac
Datei (GNU Autotools) setzen kann, so dass die Flags automatisch vom Befehl ./configure
zum Makefile hinzugefügt werden?
Zusätzlich zur automatischen Bestimmung der besten Flags würde ich mich für einige nützliche Compiler-Flags interessieren, die als Standard für die meisten optimierten ausführbaren Dateien verwendet werden können.
Update: Die meisten Leute schlagen vor, einfach verschiedene Flaggen auszuprobieren und die besten empirisch auszuwählen. Für diese Methode hätte ich eine weitere Frage: Gibt es ein Dienstprogramm, das alle Compiler-Flags auflistet, die für die Maschine, auf der ich aktiv bin, möglich sind (z. B. Tests, ob SSE-Anweisungen verfügbar sind usw.)?
Die "besten" Optimierungsoptionen hängen davon ab, was Ihr Code tatsächlich tut. Nur du weißt das. –
Und um es zu "elf" zu machen, sollten Sie es profilieren. Es gibt nur wenige kostenlose Mittagessen in Bezug auf Compiler-Umschaltmöglichkeiten. –
Ok, um es wirklich an meinen Code anzupassen, sollte ich die Optionen manuell auswählen und sie profilieren. Aber es kann nicht schaden, den entsprechenden "-march = cpu-type" auf diesem Rechner hinzuzufügen? Und es sollte bestimmte Kategorien von Programmen geben, die von bestimmten anderen (Hardware-abhängigen) Kompilierungsflags profitieren? Zum Beispiel fällt mein Programm in die Kategorie "verwendet viele Fließkommaoperationen". – Frank