Compile Geschwindigkeit

Gast #5442672
Lesenswert?

Hallo,

Bei der Verwendung von Yagarto (2009) hatte ich make mit J2 oder -j4 
ausgeführt. Ein ganzes Projekt wurde schnell Compiliert.

Bei GNU ARM habe ich keine make Files da es in WinIdea integriert ist. 
Gibt es irgendeine Möglichkeit Gnu Arm auf mehreren PC CPUs ausführen zu 
lassen und gibt hier ausch einen -j Schalter
#5442822
Lesenswert?

MaWin schrieb:
> foobar schrieb:
>> dann werden Compiler und Assembler parallel ausgeführt
>
> Wie soll das gehen?
>
> -pipe verwendet pipes statt temporärer Dateien. Auf modernen
> Betriebsystemen mit ordentlichem Page Cache, spielt das aber kaum eine
> Rolle.

Und dessen Prozessverwaltung die Eigenheiten von Unix hat, die da ist 
Prozesse schnell clones zu können. Hatten wir erst vor ein paar Wochen 
diskutiert, ein ganz beliebtes OS ohne X im Namen kann das nicht und 
braucht deshalb zum Übersetzen gern mal 5..10 fache Zeit.
Gast #5442828
Lesenswert?

Bei -pipe geht es darum, Compiler und Assembler parallel zu starten und 
die Daten per Pipe vom ersten zum zweiten zu schicken. Es findet eine 
(begrenzte) parallele Verarbeitung statt. Ohne -pipe wird der Assembler 
erst gestartet, wenn der Compiler fertig ist - schön seriell.
Gast #5442939
Lesenswert?

foobar schrieb:
> Ohne -pipe wird der Assembler
> erst gestartet, wenn der Compiler fertig ist - schön seriell.

Was soll denn der Assembler machen, wenn der Compiler noch am optimieren 
ist?
Ich sehe da keine Möglichkeit zu parallelisieren.

Der Vorteil von -pipe ist eher das Nichtanlegen von Dateien im 
Dateisystem.
Gast #5443069
Lesenswert?

> Was soll denn der Assembler machen, wenn der Compiler noch am optimieren
> ist?

Ich weiß nicht, wie es heute ist, aber vor einigen Jahren (als die 
Rechner noch langsamer waren und man das direkt sehen konnte g) kam 
der Assembler-Output funktionsweise raus.
#5443075
Lesenswert?

foobar schrieb:
>> Was soll denn der Assembler machen, wenn der Compiler noch am optimieren
>> ist?
>
> Ich weiß nicht, wie es heute ist, aber vor einigen Jahren (als die
> Rechner noch langsamer waren und man das direkt sehen konnte g) kam
> der Assembler-Output funktionsweise raus.

Heute hat man LTO und der Assembler erhält erst am Ende alles an Stück.
Gast #5443143
Lesenswert?

OK, der Assembler hat ehe wenig zu tun. Die 50 Files C Code machen den 
Löwenanteil aus.
Ich werde mich mal in die make Geschichte (wieder) einarbeiten. Scheint 
ja die einzige Lösung zu sein meine 32 Kerne (Proll...) mal zu nutzen.
#5444753
Lesenswert?

Frank schrieb:
> OK, der Assembler hat ehe wenig zu tun. Die 50 Files C Code machen den
> Löwenanteil aus.
> Ich werde mich mal in die make Geschichte (wieder) einarbeiten. Scheint
> ja die einzige Lösung zu sein meine 32 Kerne (Proll...) mal zu nutzen.

Wenn ich mich übrigens Recht entsinne, brauchen aktuelle Versionen von 
GNU Make den Schalter "-j" nicht mehr.
#5444983
Lesenswert?

Sheeva P. schrieb:
> Frank schrieb:
>> OK, der Assembler hat ehe wenig zu tun. Die 50 Files C Code machen den
>> Löwenanteil aus.
>> Ich werde mich mal in die make Geschichte (wieder) einarbeiten. Scheint
>> ja die einzige Lösung zu sein meine 32 Kerne (Proll...) mal zu nutzen.
>
> Wenn ich mich übrigens Recht entsinne, brauchen aktuelle Versionen von
> GNU Make den Schalter "-j" nicht mehr.

Das wäre mir neu.

Kann ich mir auch nicht vorstellen. Dafür sind viel zu viele Makefiles 
draussen, die im Parallelbetrieb Fehler erzeugen.
Gast #5449869
Lesenswert?

Markus F. schrieb:
> Das wäre mir neu.
>
> Kann ich mir auch nicht vorstellen. Dafür sind viel zu viele Makefiles
> draussen, die im Parallelbetrieb Fehler erzeugen.

Dem ist nicht so, die letzten Wochen (mit aktuellem make) habe ich 
mehrere Male einen Kernel und Projekte von mir übersetzt, da war immer 
-j nötig/zu vermeiden.

Vielleicht gibt's da eine neue Funktion, dass ein Makefile um mehrere 
Kerne bitten kann, oder so...
Gast #5449872
Lesenswert?

Achja, die 32 Kerne bekommst du auch nur ein paar Sekunden damit 
ausgelastet, einen Linux Kernel zu compilieren.

Ich würde da zum Testen Firefox, Chrome oder OpenOffice compilieren.

OpenOffice habe ich das erste mal auf einem 600er Celeron compiliert. 
Das war eine Aufgabe für den Rechner...
Gast #5449981
Lesenswert?

Markus F. schrieb:
> Sheeva P. schrieb:
>> Frank schrieb:
>>> OK, der Assembler hat ehe wenig zu tun. Die 50 Files C Code machen den
>>> Löwenanteil aus.
Was ist denn das für eine Zauberei? Löwenanteil beginnt ab einigen 
hundert C++ Dateien mit ordentlich Template-programming...



> Kann ich mir auch nicht vorstellen. Dafür sind viel zu viele Makefiles
> draussen, die im Parallelbetrieb Fehler erzeugen.
Oder der Schalter -j bringt kein Zeitgewinn.
Es handelt sich dabei um stümperhaft geschriebene Makefiles, in denen 
nicht alle Abhängigkeiten unter den Dateien und Subsysteme sauber 
erfasst sind.

Zur Verkürzung der Builddauer lohnt es sich gut & GRÜNDLICH in Make 
einzusteigen. Da kann man ins Staunen geraten, wieviel "Luft" in ganz 
vielen Projekten drin ist.
Gast #5456783
Lesenswert?

I <3 Makefiles schrieb:

> Zur Verkürzung der Builddauer lohnt es sich gut & GRÜNDLICH in Make
> einzusteigen. Da kann man ins Staunen geraten, wieviel "Luft" in ganz
> vielen Projekten drin ist.

Naja, bei dem üblichen Edit-Compile-Link-Test Zyklus spielt die Compile 
Dauer bei großen Programmen eigentlich keine Rolle mehr.

Die Link Dauer aber sehr wohl! Und da helfen leider keine 22 Cores - da 
braucht man GHz! Ein großer L3 Cache kann auch etwas helfen..

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren