Was ist wichtiger für die CPU oder den RAM zum Kompilieren großer Software, z. B. Bootstrapping von gcc?

10

Ich möchte bald einen neuen Computer kaufen und möchte eine Maschine mit der besten Leistung für schnelle Kompilierungszeiten.

Sollte ich mir also eine Quad-Core-CPU mit dem höchsten GHz zulegen, die ich mir leisten kann, oder sollte ich stattdessen in RAM mit höherer Geschwindigkeit investieren?

Was ist Ihre Empfehlung für welche Art von RAM sollte ich wählen?

Die Grafikleistung spielt keine Rolle, es wird eine Menge Software kompiliert und mathematische Simulationen ausgeführt.

Dima
quelle

Antworten:

8

Ich würde auch nicht sagen. Holen Sie sich lieber eine schnelle SSD-Festplatte . Natürlich brauchen Sie auch eine richtige CPU und RAM, aber ja ...

Svish
quelle
2
Nun, ich habe keine SSD bekommen, stattdessen habe ich 32 GB RAM und kompiliere alles im RAM auf tmpfs .... sogar schneller als SSD =)
Dima
1
Nun, das ist die gleiche Idee: p
Svish
1
Ich stimme dir nicht zu. Ich habe ein SSD-Laufwerk für meinen Laptop bekommen und es hat wenig Unterschied in der Kompilierungsgeschwindigkeit gemacht. Wenn Sie dagegen einen neuen Computer mit fast der dreifachen CPU-Geschwindigkeit und nur 4 GB gegenüber 6 GB auf dem SSD-Computer erwerben, ist das Kompilieren fast dreimal so schnell. anandtech.com/show/2829/25 stellt mit einer SSD keine merkliche Verbesserung der Compilergeschwindigkeit fest, während blog.hypercomplex.co.uk/index.php/2010/06/… eine Verbesserung von 23% feststellt. Es erscheint mir logisch, dass das Kompilieren bei ausreichend Speicherplatz nur sehr wenig Festplattennutzung erfordert.
Chris Dragon
Ein anderer Gedanke ist, dass einige Compiler möglicherweise viele temporäre Dateien zum Kompilieren anstelle von Speicher verwenden. In diesem Fall würde eine SSD oder Ramdisk am meisten helfen. Ich würde jedoch nicht erwarten, dass moderne Compiler auf diese Weise entwickelt werden, da der Speicher billig und groß ist und das System das Paging auf die Festplatte übernimmt, wenn er knapp wird. Mit XCode 3.2.6 (basierend auf gcc 3 oder 4) hatte SSD wenig Nutzen.
Chris Dragon
Eine SSD macht einen großen Unterschied bei großen Projekten / Lösungen, bei denen das Kopieren / Verschieben von Dateien stark beansprucht wird. Ich persönlich habe RAM nicht im tmpfs-Stil verwendet, aber ich habe gute Dinge darüber gehört. Für kleinere Projekte ist es wahrscheinlich in Ordnung. Für große? Es könnte unzureichend sein.
KayleeFrye_onDeck
4

Wahrscheinlich wird RAM Ihnen einen größeren Knall für das Geld geben. Das Kompilieren, insbesondere großer Anwendungen, ist sehr E / A-intensiv. Wenn Sie mehr RAM haben, können Sie mehr Zeit beim Paging auf und von der Festplatte sparen. Die meisten CPUs von heute, insbesondere wenn Sie mit einem billigen Quad-Core arbeiten, bieten viel CPU-Leistung für das Kompilieren, aber der Arbeitsspeicher hilft beim Hin- und Hergehen der Daten.

Beim zweiten Gedanken hängt es irgendwie von Ihren mathematischen Simulationen und Erstellungsprozessen ab. Sind sie parallelisierbar? Wenn nicht, führt das Hinzufügen weiterer Kerne nicht wirklich zu einer Beschleunigung, obwohl die neuen Intel-Chips (Core i7) pro Kern recht schnell sind.

Jimmy
quelle
1
Was hat das Kompilieren mit der Festplatte zu tun?
Arash
1

Ich würde sagen, Sie bekommen jede Menge RAM und verwenden RAM-Disks für die temporäre Speicherung. Dies erhöht die Kompilierungsgeschwindigkeit erheblich. Eine schnelle Multi-Core-CPU wäre auch in Ordnung, aber ich denke, dass Sie mehr von viel RAM profitieren würden. In diesem Artikel finden Sie einige Ideen. Hier ist ein paar mehr Informationen und mehr einige hier . Ich denke, dass die Verwendung von RAM schneller ist als die Verwendung von SSD, aber ich könnte mich irren.

AndrejaKo
quelle
1

Für Ihre Berechnungen ist Ihr Prozessor bei weitem am wichtigsten.

Die Kompilierung belastet sowohl Ihren Prozessor als auch den Arbeitsspeicher.

Ich denke, Ihre kostengünstigste Lösung wäre, die beste CPU zu erhalten, die Sie sich leisten können, und vorzugsweise einen Quad-Core. Da RAM so billig ist wie es ist (DDR3 ist jetzt so billig wie DDR2), können Sie einfach so viel RAM anschließen, wie Sie für eine kleine Münze benötigen (16 GB DDR3 für 180 US-Dollar bei Newegg ... Ich weiß, das ist übertrieben, Ich versuche nur zu demonstrieren, wie billig es ist. Ich würde also so viel wie möglich in eine hochwertige CPU investieren.

Flynismo
quelle
Es ist ein guter Rat, mehr Geld auszugeben, um eine schnellere CPU zu erhalten. Aber nicht mehr Geld ausgeben, um mehr Kerne zu bekommen. GCC führt die gesamte Kompilierung in einem einzigen Thread durch, sodass niemals mehr als ein Kern verwendet wird.
Isaac Rabinovitch
@Isaac Ja, aber das Build-System kann normalerweise mehrere gcc-Jobs gleichzeitig erzeugen, z . B. makemit der -jOption. Ich glaube auch, dass llvm eine einzelne Datei mit mehreren Threads kompilieren kann oder wird.
Ponkadoodle
@Wallacoloo OK, manchmal können Sie etwas mehr Geschwindigkeit erzielen, wenn Sie Dateien haben, die parallel im Abhängigkeitsdiagramm sind. Trotzdem glaube ich, dass zusätzliche Kerne ein ziemlich untergeordneter Faktor sind, wenn es darum geht, einen Build zu beschleunigen. Schwer zu sagen, da zusätzliche Kerne eine Standardfunktion in neueren CPUs sind, die die Dinge beschleunigen, indem sie nur schneller takten. Wenn Sie zeigen möchten, dass ich falsch liege, versuchen Sie, eine große Kompilierung mit und ohne -j durchzuführen.
Isaac Rabinovitch
1
@IsaacRabinovitch Eigentlich ist es auf großen Codebasen sehr wichtig . Auf unserer Codebasis wird die Kompilierungszeit fast linear mit distcc( make -j8(lokal) bis make -j30(verteilt über das Netzwerk))
Alex
0

Nun, Grafiken könnten helfen, da eine Grafikkarte mit einer CPU die Belastung der Haupt-CPU verringern kann. Die CPU-Leistung ist wahrscheinlich wichtiger als der Arbeitsspeicher, aber je besser beide sind, desto besser geht es Ihnen.

jer.salamon
quelle
Guter Punkt - nur wenn der Prozess CUDA-Kerne verwenden könnte, was die meisten nicht tun.
NoBugs
0

Aufgrund physikalischer Einschränkungen werden die Kerne selbst nicht so schnell viel schneller. Wenn Sie also nicht vorhaben, in kundenspezifisches Silizium zu investieren, das in schnellere CPUs investiert, wird Ihr Problem nicht gelöst, es sei denn, die Parallelisierung wird wirklich einen Unterschied machen, aber so oder so kommen viele Software-Programme kaum über 4 Kerne hinaus Ich weiß es, weil ich sehr oft mein gesamtes System kompiliere und oft nach Ressourcenstatistiken schaue. Selbst wenn die Entwickler die Parallelisierung erhöhen wollten, ist es manchmal schwierig, sie auf eine gute Art und Weise zu erstellen. Investitionen in CPUs sind gut, um entweder die Serviceleistung zu steigern oder wenn Sie Berechnungen zunächst auf der Grundlage von Daten durchführen. auch wenn es später das Ausführungsverhalten beeinflusst; Wenn Ihre Kompilierungen einigen dieser Muster folgen, ist es möglicherweise schwieriger zu diskutieren, aber dies sind einige Sonderfälle für den Erstellungsprozess. Aus diesem Grund machen beispielsweise beim grafischen Rechnen immer noch mehr Kerne einen Unterschied. Abgesehen davon, dass Sie alles tun, um die E / A so weit wie möglich zu erhöhen, kann es sich um Festplatten, RAMs und Motherboards handeln

Jeferson Lemos
quelle