Kompilieren oder Verwenden vorgefertigter Binärdateien?

11

Ist die Leistung besser (schneller), wenn ich die Quelle für eine Softwarekomponente für den tatsächlichen Computer, auf dem sie verwendet wird, manuell kompiliere, als wenn die Quelle auf einer anderen Plattform kompiliert wurde, möglicherweise für viele verschiedene Architekturen? Ich habe einige gute Ergebnisse beim Kompilieren der Quelle erhalten, die ich heruntergeladen habe, und ich frage mich, ob dies auf das Kompilieren zurückzuführen ist, anstatt eine vorkompilierte Binärdatei herunterzuladen, was bei Software-Updates häufig der Fall ist.

Niklas
quelle
2
Durch das Kompilieren aus Kompatibilitätsgründen mit vielen Architekturen werden möglicherweise bestimmte Optimierungen eliminiert, die beim Kompilieren für eine einzelne Architektur möglich sind.
Robert Harvey
1
Abgesehen davon, dass Sie gezielter sind (was fast immer von Vorteil ist), werden Sie wahrscheinlich auch auf große Unterschiede zwischen Compilern stoßen - verschiedene Compiler unterstützen unterschiedliche Optimierungen, und manchmal können Leistungsengpässe von einem, aber nicht von den anderen optimiert werden.
Daniel B

Antworten:

8

In vielen (wenn nicht den meisten) Fällen ja. Dies liegt daran, dass der Compiler nativen Code erzeugen kann, der für diese bestimmte CPU und Umgebung optimiert ist. Der Code ist "gezielter".

Epistemex
quelle
7

Das Kompilieren aus Quellen bietet Ihnen den Vorteil, dass Sie die Compiler-Flags so einstellen können, wie Sie es für Ihre spezifische Plattform wünschen. Das Herunterladen eines Pakets, das mit denselben genauen Einstellungen wie Ihres kompiliert wurde, bietet keinen Unterschied. Wenn Sie jedoch die Einstellungen von den Standardeinstellungen ändern, können Sie große Verbesserungen erzielen.

Wenn beispielsweise die zum Herunterladen angebotenen Binärdateien (absichtlich oder versehentlich) zum Debuggen kompiliert wurden, verbessert das Aktivieren einer aggressiveren Optimierung die Leistung in fast allen Situationen. Wenn andererseits der kompilierte Code maximal optimiert wird, sehen Sie keinen Unterschied.

dasblinkenlight
quelle
Mein Kompilierungsaufwand war also möglicherweise nicht umsonst. Ich habe die Quelle auf mod_jk heruntergeladen und kompiliert und sie wurde sehr schnell und ich frage mich, ob das an der manuellen Kompilierung lag. Danke für die Antwort.
Niklas
1

Dies hängt wirklich von den beiden verwendeten Compilern und Compiler-Flags ab. Normalerweise sind die Compiler- und Flag-Einstellungen auf Ihrem lokalen Computer besser für Ihren bestimmten Computer geeignet, wenn Sie die Dinge richtig konfiguriert haben.

Wenn zum Beispiel die vorgefertigte Binärdatei mit einem viel besser optimierenden Compiler (oder einem Benchmark-Special, das mit Flags entwickelt wurde, die auf diesen bestimmten Code abgestimmt sind und zum Glück für Ihr System geeignet sind) im Vergleich zum Compiler erstellt wurde Dann ist es möglich, dass der Compiler auf Ihrem System tatsächlich zu einer schlechteren Leistung führt.

hotpaw2
quelle