C++ Kompilieren: Was ist wichtig? Ram? Cpu? Schreibgeschwindigkeit?

Registriert
Okt. 2015
Beiträge
1
Hallo,

ich hätte eine kurze Frage:
Worauf sollte man den größten Wert legen, wenn man größere C++ Anwendungen in Visual Studio kompilieren möchte?
Starke CPU?
Viel RAM?
Schnellstmögliche SSD?

Dass man von allem eine gewisse Basis haben sollte, ist klar, aber wenn man eine Grundausstattung hat mit 4-8 GB Ram, 2.0 GHz Dualcore i3 und einer Standard SSD von OCZ o.ä., was bringt dann am meisten?
Aufstocken auf 16 GB Ram, ein Dualcore i5/i7 mit an die 3.0 GHz oder eine superschnelle PCI Express SSD?

Bei der Frage geht es um einen Notebookkauf, also ist z.B. 16 Gb Ram reinzuknallen, einfach weil es wenig kostet und kaum schaden kann, keine Option.
 
Leberkäsestulle schrieb:
Worauf sollte man den größten Wert legen, wenn man größere C++ Anwendungen in Visual Studio kompilieren möchte?
Starke CPU?
Viel RAM?
Schnellstmögliche SSD?

Also ich habe auch VS2015 auf einem i3 laufen, das ist zäh. Fühlt sich auf meinem alten Phenom-II/X6 schneller an. Ich denke mal, die "Link-Geschwindigkeit" ist das Problem, und das ist bei großen Projekten ganz klar CPU bound. Beim Entwickeln kompilierst Du ja jeweils immer nur 1 oder 2 Module von 1000. Und die Header änderst Du sicher nicht minütlich.

SSD wird nicht viel ausmachen, da nach einer gewissen Anlaufzeit die obj-files sowieso im RAM landen. Genug RAM kann also nichts schaden.

Aber das ist nur meine unqualifizierte subjektive Meinung. Gemessen habe ich das nicht. Kannst Du etwas zu den "größeren C++-Projekten" sagen?
 
Zuletzt bearbeitet:
Kompilierzeit kriegt man hiermit hin, wenn noch andere PCs im Netzwerk sind. Kostet aber Geld:
https://en.wikipedia.org/wiki/IncrediBuild
Linkzeit ist leider die selbe.
SSD und single-core performance (intel und hohe mhz) sind wichtig. Ram reichen eigtl 4gb solange vs 1-2 abbekommt. 8 kosten ja aber nicht die Welt und würde ich empfehlen, da man ja nicht unbedingt extra Office/Firefox beenden will zum Kompilieren. Ich hatte jahrelang 4 und durch den Sprung auf 8 kann ich mehrere Solutions gleichzeitig kompilieren (mehrere VS laufen gleichzeitig) aber die Geschwindigkeit bei nur einer Solution hat nicht zugenommen.
Da es um Laptops geht würde ich insbesondere auf eine bessere CPU achten, da der i3 keinen Turbo hat, was bei der angesprochenen Single-Core Performance schon einen Unterschied ausmacht.
Ansonsten macht man enorme sprünge (Faktor 10-20) mit GCC + https://de.wikipedia.org/wiki/Ccache sofern das eine Option für dich ist. Aber VS mit GCC ist Aufwand. Link1, Link2

Ich persönlich kompiliere ein Projekt auf nem Ultrabook i3-40xxU in ca 150 sekunden aber mit ccache in ~11 (1Datei kompilieren, Cache und Linktime).. Hab mich damals für den i3 entschieden, damit der Laptop meist passiv läuft aber würde mich jetzt doch für nen i5/i7 entscheiden wgn Turbo.
 
Zuletzt bearbeitet:
Ob 4-8 GB RAM reichen, kommt immer auf das Projekt an. Wenn du fragst kann man davon ausgehen, dass dein Projekt nicht so groß ist, dass 8 GB RAM zuwenig wären. Wenn dein RAM ausreicht bringt dir mehr absolut nichts. Da 16 GB aber heute eh fast nix kosten (auch bei Notebooks) nimm sie einfach.

Ob die SSD 400 MB/s oder 800 MB/s schafft ist irrelevant. Schau dir einfach mal an wie groß deine Quellen sind und dann rechne mal aus wie lange es bei den verschiedenen Geschwindigkeiten brauch diese zu übertragen. Im Vergleich zur Zeit, die der Rechner zum Kompilieren braucht ist das vernachlässigbar klein.

2.0 GHz ist extrem schlecht. Geh davon aus, dass 4.0 GHz doppelt so schnell sind. Mehr Kerne ist auch immer gut.
 
Beim Festspeicher reicht es bei Notebook und normaler Desktophardware, dann es eine überhaupt eine SSD. Die kurzen Zugriffszeiten bei verteilten Zugriffen sind Trumpf. Solang die SSD bei bei kleinen Zugriffen nicht komplett am Boden liegt ist alles in Ordnung.

Bei der CPU ist Arithmetikleistung Trumpf. Es ist in der Regel sogar egal ob die Leistung über hohe Leistung je Kern oder viele Kerne erreicht wird.

Ansonsten, die größe des Arbeitsspeichers empfiehlt sich immer nach dem Bedarf beim Arbeitsablauf. Für mich sind 8GB mittlerweile zu knapp, wobei der Hauptgrund die intensive Nutzung virtueller Maschinen sind. Wobei eine Win10 VM unter 4GB sinnlos ist und 4GB für den Host insofern knapp ist, da ich da meist viele Browsertabs +weitere Programme offen habe. Für reine Compilerläufe beispielsweise über den Linux Kernel reichen die 8GB in der Regel. Die Kiste swappt zwar etwas, aber in der Regel ohne großen Einfluss auf die Laufzeit.
 
WeisseSmarties schrieb:
Mehr Kerne ist auch immer gut.

Da einige Vorposter nur die Single-Core-Performance hervorgehoben haben, sei das noch mal betont: Visual Studio kann auch auf mehreren Kernen / Threads kompilieren. Man muss es (zumindest in VS2013, siehe Link) zwar erst einschalten, bekommt dann aber auch deutlich schnellere Builds. Also: Ein Vierkerner oder zumindest Hyperthreading wären hier schon sinnvoll.
 
Kompilierzeit kriegt man hiermit hin, wenn noch andere PCs im Netzwerk sind. Kostet aber Geld:
Und distcc kostet keins. Funktioniert aber wahrscheinlich auch nicht mit Visual Studio. :freak:

WeisseSmarties schrieb:
Mehr Kerne ist auch immer gut.
This. Man kann gar nicht genug CPU haben - bisschen Single Core-Leistung wäre zwar gerade zum abschließenden Linken, oder falls man mal nur 1-2 Dateien neu bauen muss, auch nicht verkehrt, aber Kerne sind bei größeren Rebuilds einfach Trumpf.

Carrizo müsste sich da nebenbei auch sehr gut schlagen. Laut Phoronix Test Suite braucht mein Kaveri-Notebook @2.8 GHz fürs Kernel compilieren gerade mal 11% länger als ein i3-4130, ein 15W-Carrizo müsste selbst ohne Trickserei mit dem Takt auf eine ähnliche Leistung kommen.

kuddlmuddl schrieb:
aber mit ccache in ~11 (1Datei kompilieren, Cache und Linktime)..
Dafür braucht man eigentlich kein ccache. Compiliert Visual Studio wirklich immer das gesamte Projekt neu und nicht nur das, was von Änderungen betroffen ist? Ich kann mir nicht vorstellen, dass man bei Microsoft wirklich so blöd ist.

Hab allerdings auch nie damit gearbeitet - wenn es nach dem Link von NullPointer geht, ist Microsofts Build-System wohl wirklich nicht das Hellste. CMake z.B. macht das aber von Haus aus.
 
Zuletzt bearbeitet:
VikingGe schrieb:
Compiliert Visual Studio wirklich immer das gesamte Projekt neu und nicht nur das, was von Änderungen betroffen ist? Ich kann mir nicht vorstellen, dass man bei Microsoft wirklich so blöd ist.

Hab allerdings auch nie damit gearbeitet - wenn es nach dem Link von NullPointer geht, ist Microsofts Build-System wohl wirklich nicht das Hellste. CMake z.B. macht das aber von Haus aus.

VS kann während des Entwicklungsprozesses ziemlich schnell bauen und kann sogar feststellen, ob es ein Modul trotz geändertem Header neu kompilieren muß (/Gm). Außerdem wird inkrementeller Rebuild unterstützt. Und man kann wie gesagt "Multiprozeß-Kompilation" ein oder ausschalten. In den cmake-VS-Templates ist das iirc auch Standard.
 
Zurück
Oben