C++ Prozessor und SSD beim Programmieren mit C++

simsinas

Cadet 4th Year
Registriert
Okt. 2015
Beiträge
116
Hey liebe CB-Community!
Ich habe damit angefangen in C++ zu programmieren. Was sagt ihr ist besser: ein PC (Core i5) oder ein Laptop (Core i3) jeweils mit SSD oder ohne? Mir wäre eigentlich der Laptop leiber und ich will mich auf jeden Fall von einem von beiden trennen. Wie wirkt sich denn die verschiedene CPU Leistung und die SSD auf die Geschwindigkeit beim arbeiten aus?

Danke für hilfreiche Antworten :)
 
Die SSD wirkt sich massiv aus, der Prozessor je nach IDE/Build Prozess.
Die SSD ist zwingend notwendig, eine schnelle CPU optional und stark von der Größe des Projekts abhängig (Linux Kernel vs. "Hello World").
 
Die Projekte sind meistens eher kleine Rechenprogramme. Also kann ich ruhig zum Laptop greifen :)

Dankeschön
 
Über sowas musst Du Dir erst Gedanken machen, wenn dein Code anfängt, 6-stellig zu werden bzw, wenn Du Projekte hast, die aus hunderten oder tausenden von einzelnen Quelldateien bestehen. Dann kommt die extrem niedrige Zugriffszeit einer SSD zum Tragen.
 
Nein, die kommt sofort zum tragen weil man da auf ctrl+f9 oder was auch immer drückt und der Compiler ist sofort fertig. Das merkt man auch bei kleinen Projekten. Die CPU allerdings merkt man erst bei Großprojekten bzw. wenn man stark optimieren lassen will.
 
Skill4Games schrieb:
Die Projekte sind meistens eher kleine Rechenprogramme.
Rechnen die Programme wirklich was aufwendiges aus oder ist das nur so zum lernen? Im letzteren Fall brauchst Du überhaupt keinen besonderen Rechner, das geht auch mit dem Smartphone ;) ==> cpp.sh
 
Skill4Games schrieb:
Mir wäre eigentlich der Laptop leiber und ich will mich auf jeden Fall von einem von beiden trennen.
Ich persönlich finde, auf einem Laptop programmiert es sich beschissen. Kleiner Monitor, beschissene Tastatur. Der Komfort fehlt einfach. Zumindest wenn man das ganze intensiv betreibt.

Und programmieren ist halbwegs ambitioniert betreiben eigentlich immer intensiv und C++ insbesondere.
(warum soll es eigentlich C++ sein? ; nimmt man vernünftigerweise eigentlich nur, wenns gar nicht anders geht, wobei die gar-nicht-anders-geht-Fälle überschaubar sind; außerdem ist die Compile-Zeit bei C++ recht grottig)

Gruß
Andy
 
asdfman schrieb:
Hört bitte auf, euren Kreuzzug zu führen.
Eben. Wenn er C++ programmieren will, lasst ihn doch C++ programmieren.

HominiLupus schrieb:
Die SSD ist zwingend notwendig, eine schnelle CPU optional und stark von der Größe des Projekts abhängig
Hängt natürlich von der Projektgröße ab, aber eine SSD vermisse ich weder in meinem Desktop, noch im Notebook. Ab dem zweiten Build sind die benötigten Dateien eh alle im RAM, sofern genug davon da (bzw. frei) ist und es wird quasi gar nicht mehr auf die HDD zugegriffen.

Wie stark sich die CPU auswirkt, hängt natürlich von der Projektgröße ab, aber auch vom Code. Je mehr Templates instantiiert werden, desto länger dauert das ganze, und desto häufiger werden auch größere Rebuilds nötig. Mein Phenom (der laut Phoronix noch eine Ecke flotter ist als der i5 des TE) braucht für nen vollständigen Rebuild meines aktuellen Projekts (~135k Zeilen eigener Code) schon 1:30 Minuten, mein Notebook mit ner (quasi) stark übertakteten Kaveri-APU rund 4 Minuten. :freak:

Kleineres Zeug und v.a. simplerer Code sollte aber auch mit nem Mobile-i3 problemlos gehen, ohne, dass die Compile-Zeiten störend lang werden. Und normalerweise wird ja auch nur das neu gebaut, wo man gerade auch etwas geändert hat.
 
Zuletzt bearbeitet:
Um gcc compile-zeiten zu verringern empfehle ich immer gerne ccache
Dadurch wird die Wichtigkeit noch stärker von der CPU weg in Richtung SSD geschoben. Bei mir beschleunigt es im Schnitt mehr als Faktor 10. Dh statt 2-3 Minuten nur ca 12 Sekunden.

Ich entwickel schon seit langem auf nem 13,3'' 1080p ULV i3-1,7GHz ultrabook und bin sehr zufrieden.. natürlich hat mein 4x4GHz Desktop mit 27'' TFT, Maus und allem viele Vorteile. Aber den 1kg laptop hab ich halt immer dabei und nutze ihn auch aufm Sofa, in der Bahn, im Bett, im Flugzeug oder wo auch immer ich mich gerade langweile :)
 
Zuletzt bearbeitet:
Um gcc compile-zeiten zu verringern empfehle ich immer gerne ccache

Aus wikipedia: "Es prüft dabei, ob die zu kompilierende Datei bereits im Cache vorliegt, und ruft den Compiler erst dann auf, wenn dies nicht der Fall ist." das macht make doch schon seit 30 Jahren, wie hilft mir das?
 
Für kleine Rechenprogramme reicht der Laptop imho locker aus. Manche mögen ja sogar Laptop Tastaturen lieber und einen externen Bildschirm (oder 2 :D, was ich bevorzuge) bzw Tastatur kann man ggfs auch noch anschließen, dafür ist man mobil. Mal ganz abgesehen vom Programmieren würde ich allerdings sowieso zu einer SSD raten, gerade in einem Laptop den man mal mit sich rum trägt.

Was sich hierbei beim Programmieren mehr auswirkt sollte in deinem Fall wie gesagt egal sein. In unserem Projekt auf der Arbeit habe ich beim reinen kompilieren z.B. nach dem Einbau einer SSD keine großen Unterschiede gemerkt. Eine komplette Neukompilierung ist da von ca 22min nur auf 20min runter gegangen. Da braucht der Prozessor länger zum kompilieren, als er Dateien braucht. Die Geschwindigkeit liefert auch eine normale HDD ganz gut. Auch wenn dort 4 Kompiliervorgänge gleichzeitig laufen.
Die Umstellung vom älteren 4 Kerner auf nen aktuellen i7-4770 hat die Kompilierzeit drastisch auf ca 8min gesenkt.

Dafür hat die SSD aber das arbeiten an sich angenehmer gemacht. Windows an sich ist Flotter und z.B. in großen Projekten kann das erhebliche Auswirkungen haben. Wenn du wirklich viele Quellcode Dateien hast und z.B. alle nach etwas durchsuchen willst, das wirkt sich sowohl in nem normalen Texteditor als auch in einer großen Entwicklungsumgebung aus. Visual Studio starten schneller und Visual AssistX baut seine Datenbank viel schneller damit auf. Bei der HDD hat man noch gemerkt, dass er am Anfang 1 bis 2 Minuten beschäftigt war. Mit der SSD startet es schnell und ist sofort da und voll einsatzbereit.

Dazu musst du aber schon ein bisschen Quellcode geschrieben haben. Außerdem übersetzt du ja im "Normalfall" nur den Teil an dem du Änderungen gemacht hast. Wenn man doch mal alles neu kompilieren muss hat man meist auch immer noch was nebenbei zu tun, wie z.B. die Änderungen nochmal durchzugehen und auf Fehler zu prüfen.
 
HominiLupus schrieb:
Aus wikipedia: "Es prüft dabei, ob die zu kompilierende Datei bereits im Cache vorliegt, und ruft den Compiler erst dann auf, wenn dies nicht der Fall ist." das macht make doch schon seit 30 Jahren, wie hilft mir das?
ccache funktioniert auch nach make clean noch. Und make prüft nur den Zeitpunkt der letzten Änderung, nicht, ob sich dabei tatsächlich der Inhalt der Datei geändert hat.

ccache funktioniert aber mit C++ schlecht, weil man dort Dateien oft neu kompilieren muss, obwohl sie sich gar nicht verändert haben.
 
Erstmal danke für die ganzen Antworten :)

Die Programme dienen eher zum lernen und (momentan noch) nicht irgendeinem Zweck. C++ musste ich quasi nehmen, da ich das in der Schule lerne, werde aber evtl. später noch auf Java oder so umsteigen (was wäre denn für Anfänger wirklich zu empfehlen?).

Zwecks Comfort: Ich habe von meinem Tower noch Maus, Tastatur, 2 Monitore usw. da, was ich eigentlich nicht verkaufen wollte, deshalb eigentlich keine Einschränkungen beim Comfort.
 
Skill4Games schrieb:
Die Programme dienen eher zum lernen und (momentan noch) nicht irgendeinem Zweck. C++ musste ich quasi nehmen, da ich das in der Schule lerne ...

OK, alles klar.

Dann nimm den Rechner, den Du hast bzw. der am wenigsten kostet oder für Dich sonst am praktischsten ist. Für das erste Jahr reicht definitv eine Umgebung im Netz. Während des Lernens kannst Du ja parallel auf Deinem Rechner verschiedene Umgebungen zu installieren versuchen, um weitere Erfahrungen zu sammeln.

Nur nicht aufgeben. Das mit dem C++ lernt man schon. Ich kenne Leute, die haben nur ca. 10 Jahre gebraucht, um das wirklich richtig zu können.

/edit: "was wäre denn für Anfänger wirklich zu empfehlen?"
Meine Meinung: Javascript.
 
Zuletzt bearbeitet:
Sagt mal, ist die ssd/Festplatte bei üblichen Heimprojekten überhaupt nennenswert involviert? Das müsste doch alles im RAM bleiben.
 
Bei der geringen Anzahl an Dateien die meist bei Aufgabe für Schule/Studium genutzt werden ist die Festplatte und eigentlich auch CPU, RAM nicht wirklich entscheidend.
Das erste mal wo ich festgestellt habe wie stark diese Faktoren das ganze beeinflussen könnte war dann beim einstieg ins Berufsleben.
Das Projekt für das ich zuständig bin hat etwa 150k Zeilen Code, aufgeteilt in ca 30 Teilprojekte welche jeweils mindestens aus 6 Dateien(im Schnitt etwa aus 10 würde ich schätzen) und nutzt einen Haufen von Includes.
Altes System
Core i7 620m
HDD 5400upm
8GB RAM
Rebuild des kompletten Projekts ~45m

Neues System
Core i7 4702MQ
Samsung 1TB SSD
16GB RAM
Rebuild des kompletten Projekts ~15m

Was durch durch eine bessere Festplatte vor allem auffällt ist das dadurch die CPU konstanter voll ausgelastet werden kann. Bei dem alten System schwankte die Last der 2 Kerne+SMT zwischen 0 und 100 %, auf dem neuem System werden die 4 Kerne+SMT fast durchgängig zu 100% ausgelastet.

PS: Musste das Projekt übernehmen(einführen neuer Bibliotheken, entfernen und doppelten Codezeilen, aufräumen der Includes, gescheite Klassenhierarchien usw.. Teilweise werden da aktuell Dateien einfach in die 30 Unterprojekte kopiert was zur folge hat das sie 30mal neu kompiliert werden und aufgrund deren scheiß Implementierung man das auch nicht auf die schnelle auflösen kann :D ) und bin dort stark am umbauen, was fürs Rebuilt benötigte Zeit immer weiter nach unten drückt. Ursprünglich dauerte ein Rebuild mal etwas über einer Stunde.^^ Ich vermute das wenn ich das Projekt irgend wann mal aufgeräumt habe wird die Zeit mindestens auf unter 10min gedrückt werden.
 
Zurück
Oben