Welche PC-Komponenten haben den größten Einfluss auf Ihre Kompilierungszeiten für Visual Studio?

16

Welche PC-Spezifikationen haben den größten Einfluss auf Ihre Kompilierungszeiten? Platte? Taktfrequenz? Anzahl der CPU-Kerne?

Rob Allen
quelle
1
Ist das nicht eine Programmierfrage? Würde StackOverflow ein größeres Publikum haben?
Kurt W. Leucht

Antworten:

13

Der Faktor, den ich gefunden habe, macht den größten Unterschied. Es handelt sich nicht um einen physischen Faktor, sondern um eine Software: Welches Antivirus haben Sie installiert?

Einige Antivirenprodukte können die Softwareentwicklung nicht gut verarbeiten. Sie sehen, dass all diese Anwendungsdateien neu geschrieben werden, verdächtigen Foul-Play und scannen jede Datei jedes Mal neu.

(Weitere Informationen finden Sie unter /programming/1170078/is-it-usual-for-aspx-files-to-take-5-10-seconds-to-save/1170129#1170129 .)

Wenn Sie jedoch die Leistung eines vorhandenen Computers verbessern möchten, können Sie den verfügbaren Speicher für einen schnellen Gewinn optimal nutzen.

Bevan
quelle
Der PC im Büro verwendet den TrendMicro OfficeScan. Mein Entwickler-Laptop zu Hause verwendet AVG 8.
Rob Allen
3
"Trend Micro". Ach je. Wenn Sie das nicht für etwas anderes ändern können, verabschieden Sie sich von jeder Aufführung.
Bevan
8

Hier sind einige gute Nachforschungen von Scott Hanselman zur Verwendung mehrerer CPUs für MSBUild. Die Beschleunigungen sind ziemlich dramatisch.

Bearbeiten: Ich sollte jedoch beachten, dass Sie viel RAM benötigen, um eine gute Erfahrung mit Visual Studio zu haben. :)

JP Alioto
quelle
+1 Guter Artikel zum Thema. Ich habe das vergessen. Ich denke, er hat auch einen Podcast dazu gemacht.
BinaryMisfit
4

Meine persönliche Erfahrung mit einer angemessenen C ++ - Codebasis:

Alte Maschine

Prozessor: Pentium 4 HT 3,06 GHz
Arbeitsspeicher: 1 GB DDR-RAM (PC 2100, also 333 MHz)
Festplatte: 7200 U / min (UDMA 100, wenn Arbeitsspeicher zur Verfügung steht)
Kompilierungszeit: 50 Minuten

Neue Maschine:

Prozessor: Core i7 720QM (8 logische Prozessoren) bei 1,6 GHz, Turbo Boost auf 1,73 GHz, wenn alle Kerne aktiv sind
Speicher: 8 GB DDR3 RAM bei 1066 MHz
Festplatte: 7200 U / min (SATA 2)
Kompilierungszeit: 4 Minuten (mit / MP )


Fazit: Je mehr Prozessoren, desto besser - auch bei relativ geringen Taktraten. Eine SSD würde die Zeiten weiter verbessern, aber von der Beobachtung der Zusammenstellungsnachrichten aus bezweifle ich, dass sie sie um mehr als 30 Sekunden verbessern würde.

mmyers
quelle
3

Soweit ich mich erinnere, hauptsächlich Prozessor und Speicher. Ein kurzer Blick auf Google enthüllte verschiedene Verbesserungen, die die Kompilierzeiten verbessern können.

Joel hat kürzlich über die Auswirkungen von Solid State Disks auf Kompilierungen hier berichtet . Die Geschwindigkeit der Festplatte verbessert die Kompilierungszeit im Allgemeinen nicht drastisch. Doch nach dieser tut es einen Effekt wie erwähnt durch haben lyngbym .

BinaryMisfit
quelle
1

Bei der Erstellung von C ++ - Programmen ist der wichtigste Faktor die Struktur. Wenn der Quellcode stark vertikal strukturiert ist, hat dies verheerende Auswirkungen auf die Erstellungszeiten, insbesondere bei inkrementellen Erstellungsvorgängen. Ich habe einige Teile eines Projekts lokal umstrukturiert, um eine dramatische Verbesserung des Quad-Core-Xeon zu erzielen. 18 Monate später und sie (die Leute, die das Projekt besitzen) können immer noch nicht mit meinen Wanduhr-Bauzeiten mithalten, auch nicht auf Core i7-Maschinen.

Der Effekt (positiv oder negativ) Ihres Software-Layouts vervielfacht sich bei jedem Mitglied Ihres Teams und bei jedem Build, den es ausführt.

Sam Harwell
quelle
Haben Sie einen Link, der unterschiedliche Codestrukturen beschreibt? Ich glaube, ich weiß, worauf Sie sich beziehen, aber ich bin nicht sicher.
Rob Allen
Ich habe Probleme, meine Referenzen zu finden, aber die allgemeine Idee ist, 1) Forward-Deklarationen zu verwenden, wo dies möglich ist, 2) Dateien nur einzuschließen, wenn eine Forward-Deklaration nicht funktioniert, und 3) sicherzustellen, dass die eingeschlossene Datei keine weiteren Deklarationen enthält Dinge als nötig, die wiederum dazu führen können, dass mehr Dateien enthalten sind, die Sie ansonsten für die zu kompilierende Quelldatei nicht benötigen (halten Sie Ihre Header klein und verwenden Sie darin Forward-Deklarationen wie für Quelldateien).
Sam Harwell
1

Xoreax IncrediBuild ist ein verteiltes Build-System, das die Kompilierungszeiten, in denen ich arbeite, erheblich verbessert hat. (Leider sind die Verbindungszeiten immer noch ziemlich lang, insbesondere Release-Builds, die die Optimierung des gesamten Programms und die Generierung von Code für die Verbindungszeit verwenden. Dies ist jedoch zu erwarten.)

Alt-Text

bk1e
quelle