d3x1984
Goto Top

Compilieren von Software auf Windows - Performance benefit?

Hi zusammen,
ich bin aus dem Thema seit ewigen Zeiten raus.
Ich habe mir früher alles rund um Linux für meinen Rechner selbst compiliert um ein wenig Performance Bonus zu bekommen.

Aber wie sieht das unter Windows aus?

Mich interessieren z.B. größere Projekte die auf Github als Source Code zur Verfügung stehen wie zh.B. die Unreal Engine (gäbe diverse Beispiele)

Wenn ich solch eine Software auf meinem Rechner selbst compiliere,
hat dies einen Performance Vorteil gegenüber der fertigen Verison die man sich herunter lädt?

Content-ID: 629261

Url: https://administrator.de/contentid/629261

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

wiesi200
wiesi200 07.12.2020 um 08:54:15 Uhr
Goto Top
Hallo,

ich bezweifle mal das du z.B. bei der Unreal Engine überhaupt schaffst deine selbst kompilierte Version das in dein Spiel zu integrieren.
Du hast ja nur einen Teil und nicht die kpl. Software als Source Code zur Verfügung.
Lochkartenstanzer
Lochkartenstanzer 07.12.2020 um 09:54:44 Uhr
Goto Top
Zitat von @d3x1984:

Wenn ich solch eine Software auf meinem Rechner selbst compiliere,
hat dies einen Performance Vorteil gegenüber der fertigen Verison die man sich herunter lädt?

Wenn Du sie nicht nur einfach mit den Voreinstellungen compilierst, sonder selbst den Code liest verstehst und optimierst, hat das eindeutig den Vorteil, daß Du die Bugs wegmachen kannst, den NSA-Kram entfernen kannst und dann noch mit den optimierten libraries linkst, hast Du hinterher deutlich bessere Andwendungen.

Wenn Du hingegen, einfach nur "make config; make; make install" tippst, kanst Du Dir das auch sparen, sofern Du das überhaupt gebaut bekommst.

lks
NordicMike
NordicMike 07.12.2020 um 10:16:46 Uhr
Goto Top
Die Persormanceunterschiede zwischen Linux und Windows sind nicht so groß, als die Performanceunterschiede zwischen den Compilern. Ich würde eher recherchieren welcher Kompiler das am Besten packt und davon abhängig das Betriebssystem wählen.
maretz
maretz 07.12.2020 um 10:43:02 Uhr
Goto Top
Das hängt aber auch davon ab welche Flags man beim Compiler überhaupt setzt. Denn klar - normal werden die Dinger mit nem Standard-Set gebaut -- so das die eben auf AMD, Intel und whatever laufen. Wäre ja blöd wenn ein Hersteller z.B. ein Spiel rausbringt, welches aber nur auf nen Intel xyz läuft, die Grafikkarte genau die xyz sein muss usw... Damit fallen dann aber natürlich auch spezifische optimierungen oder ganze Befehlssatz-Bereiche raus. Wenn man das jetzt selbst übersetzt kann man die mit im Compiler aufnehmen lassen UND die werden dann genutzt. Das kann schon einiges bewirken. Das Problem an der Kiste wird nur werden: Bis man da alles zusammen hat um das Programm zu bauen braucht man ja auch Zeit. Denn es ist ja bei grösseren Programmen eher nicht der Fall das man einfach nur eine Datei lädt und gut ist - da sind abhängige Librarys drin, ggf. werden sogar noch spezielle Versionen von denen benötigt,... Auch das muss man sich ja dann erst mal zusammensuchen. Dann muss man natürlich auch noch die Zeit einrechnen die der Compiler verwendet - bei grossen Programmen kann das ja auch durchaus einige Stunden dauern (und das mehrfach weils eben ab und an auch dann einfach nur ne Fehlermeldung am Ende gibt). Wenn man den Zeitaufwand mal dagegen rechnet stellt sich die Frage ob sich das noch lohnt...

Wenn man dann noch glaubt wirklich da "NSA-Kram" oder sonstwas suchen zu wollen - viel Spass... Selbstverständlich würde jede Behörde da nen Block einfügen
/*
  • Here begins the NSA/CIA/BND-Area, pls. do not remove
*/
Auch da würde ich somit mal vermuten das es in den Frameworks drinne hängen würde und da hat man dann eben keinen Zugriff auf die sources (ganz davon abgesehen das man es ja auch erst mal erkennen müsste). Schon ist der Teil also egal -> bis man das wirklich komplett debugged hat hätte man die Engine auch einfach komplett selbst geschrieben. Bugs entfernen ist genauso Unsinnig in dem Kontext - weil man sich ja da ne eigene Version baut. Wenn man nicht zufällig was findet und das auch an den Hersteller zurück liefert hätte man jetzt also nen eigenen Source-Tree erzeugt. Man selbst hat dann also 1 Bug gefixt - super... der Hersteller, bei dem die SW-Entwickler ihren Code ja kennen, hat in der Zeit aber 10 andere gefixt die bei einem selbst dann noch offen sind. Daher sind das eher keine Bereiche die optimierungen betreffen - das sind eher die "interessierten" Personen die sowas lesen und die eben dann aber auch die Hersteller (bestenfalls) informieren oder (schlimmstenfalls) die Lücken ausnutzen um andere Rechner anzugehen...
d3x1984
d3x1984 07.12.2020 um 19:01:38 Uhr
Goto Top
Danke für die Antworten.
Ich hatte mir schon was ähnliches gedacht aber mir gings primär um sowas wie
"Wenn ich ein AMD System habe, bringt mir es eine Version spezifisch für mein System zu compilieren"
Ich habe (und das ist 15 Jahre her) früher mir meine Linux maschinen spezifisch für das System zusammen compiliert
also z.B. beim bauen des Kernels diverse Module eben je nach bedarf dazu oder weg gelassen etc...
Ein gut optimiertes Linux (wie z.B. gentoo) rennt wie Sau und ist in Sachen performance Windows um längen vorraus (und verbraucht auf Notebooks dabei noch wesentlich weniger Strom).
Das war aber schon immer so. Das ist ähnlich der "Mac OS ist schneller als Windows" Diskussion.
Klar ist MacOS etwas flotter. Muss ja auch nur einen gewissen Satz von Hardware unterstützen und wird spezifisch optimiert.
Windows muss auch aufm Kühlschrank, der Mülltonne, meinem Toaster und meinem Bus Ticketautomat laufen.
Ich hab mich im Windows Bereich eben nie darum gekümmert ob es Sinn macht eine Software XY spezifisch für ein System zu compilieren
(Beispiel mit den Befehlssätzen wurde ja schon erwähnt).
NordicMike
NordicMike 08.12.2020 um 08:12:18 Uhr
Goto Top
... rennt wie sau ... wesentlich
Maximal 5% unterschied in der Performance. Was du meinst sind Module, die Linux einfach weg lässt.
Dr.Bit
Dr.Bit 08.12.2020 aktualisiert um 08:17:34 Uhr
Goto Top
Hat er ja auch nicht ganz Unrecht, da die nicht geladen werden, ist das System natürlich schneller. IMHO sind das heutzutage aber nur Messwerte. Auf einem 286 oder 386 hat das noch was gebracht. Auf meinem 486 DX 33 mit 64 MB RAM habe ich das schon nicht mehr bemerkt.

🖖
maretz
maretz 08.12.2020 um 08:26:29 Uhr
Goto Top
Grad bei den Serien hat es aber noch einiges gebracht - da u.a. der 486er auch als SX ohne Math. Copro da war und man da über den Compiler schon noch was machen konnte...

HEUTE würde ich auch sagen das der Nährwert überschaubar ist - da die grundlegenden Befehlssätze schon identisch sind und wenn man nich grad in nem wirklich speziellen Eck unterwegs ist es nicht viel bringt. Ob ich jetzt nen Thunderbird, Openoffice oder sonstwas mit 08/15-Instruktionen laufen lasse oder da ggf. irgendwo eine spezielle Variante ist macht wenig aus... Hier müsste man dann schon weiter gucken - und erst mal genau schauen wo der Rechner überhaupt seine Zeit verballert - wenns eher die Wait's sind dann hilft es wenig am Code zu optimieren (und ich vermute mal heute wird eher auf die Platte gewartet - selbst bei SSD is das noch eher der bremsende Faktor). Hier müsste man dann schon erheblich am Source-Code ändern (z.B. Pre-Loader einbauen weil man ja selbst weiss was man häufig nutzt)... aber nur weil mans selbst durchn Compiler gejagt hat wirds nich den grossen Mehrwert bringen..