Quali componenti PC hanno il maggiore impatto sui tempi di compilazione di Visual Studio?


Risposte:



13

Il fattore che ho trovato fa la differenza più grande non è un fattore fisico, ma un software: quale antivirus hai installato?

Alcuni prodotti antivirus non gestiscono molto bene lo sviluppo del software: vedono che tutti questi file dell'applicazione vengono riscritti, sospettano che si verifichino errori e che eseguano nuovamente la scansione di ogni file ogni volta.

(Vedi /programming/1170078/is-it-usual-for-aspx-files-to-take-5-10-seconds-to-save/1170129#1170129 per ulteriori informazioni).

D'altra parte, se vuoi migliorare le prestazioni di una macchina esistente, niente batte al massimo la memoria disponibile per una vittoria veloce.


Il PC in ufficio utilizza TrendMicro OfficeScan. Il mio laptop dev a casa utilizza AVG 8.
Rob Allen,

3
"Trend Micro". Oh caro. Se non riesci a cambiarlo per qualcos'altro, saluta tutti gli spettacoli.
Bevan,

8

Ecco alcune belle ricerche di Scott Hanselman sull'utilizzo di più CPU per MSBUild. Le accelerazioni sono piuttosto drammatiche.

Modifica: dovrei notare, tuttavia, che per avere una buona esperienza con Visual Studio, è necessaria molta RAM. :)


+1 Buon articolo sull'argomento. Me ne sono dimenticato. Penso che abbia anche fatto un podcast in merito.
BinaryMisfit,

4

La mia esperienza personale con una base di codice C ++ di dimensioni adeguate:

Vecchia macchina

Processore: Pentium 4 HT 3.06 GHz
Memoria: 1 GB RAM DDR (PC 2100, quindi 333 MHz)
Disco: disco rigido 7200 RPM (UDMA 100, se la memoria serve)
Tempo di compilazione: 50 minuti

Nuova macchina:

Processore: Core i7 720QM (8 processori logici) a 1,6 GHz, turbo boost a 1,73 GHz quando tutti i core sono attivi
Memoria: 8 GB RAM DDR3 a 1066 MHz
Disco: disco rigido 7200 RPM (SATA 2)
Tempo di compilazione: 4 minuti (con / MP )


Conclusione: maggiore è il numero di processori, più è semplice, anche a velocità di clock relativamente basse. Un SSD migliorerebbe ulteriormente i tempi, ma dall'osservazione dei messaggi di compilazione, dubito che lo migliorerebbe di oltre 30 secondi circa.


3

Per quanto mi ricordo principalmente Processore e Memoria. Un rapido google ha rivelato varie modifiche che possono migliorare i tempi di compilazione.

Joel ha recentemente pubblicato sull'effetto dei dischi a stato solido sulle compilazioni qui . La velocità del disco generalmente non migliora drasticamente il tempo di compilazione. Tuttavia secondo questo ha un effetto come sottolineato da Lyngbym .


1

Per la creazione di programmi C ++, il fattore n. 1 prima di tutto è strutturale: se il codice sorgente è fortemente strutturato verticalmente, avrà un impatto devastante sui tempi di costruzione, in particolare build incrementali. Ho ristrutturato localmente alcune parti di un progetto per un notevole miglioramento su un Xeon quad-core. 18 mesi dopo e loro (le persone che possiedono il progetto) non riescono ancora a eguagliare i tempi di costruzione del mio orologio da parete nemmeno su macchine Core i7.

L'effetto (positivo o negativo) del layout del software si moltiplica tra tutti i membri del team e ogni build che eseguono.


Hai un link che descrive diverse strutture di codice per favore. Penso di sapere a cosa ti riferisci ma non ne sono certo.
Rob Allen,

Ho problemi a trovare i miei riferimenti, ma l'idea generale è 1) utilizzare le dichiarazioni in avanti ove possibile, 2) includere i file solo quando una dichiarazione in avanti non funzionerà e 3) assicurarsi che il file incluso non dichiari di più cose del necessario, che a loro volta potrebbero far sì che includano più file che altrimenti non sono necessari per la compilazione del particolare file sorgente (ovvero mantenere le intestazioni piccole e utilizzare dichiarazioni in avanti in esse proprio come si fa per i file sorgente).
Sam Harwell,

1

Xoreax IncrediBuild è un sistema di build distribuito che ha apportato un enorme miglioramento ai tempi di compilazione in cui lavoro. (Sfortunatamente, i tempi di collegamento sono ancora piuttosto lunghi, in particolare le build di rilascio che utilizzano l'ottimizzazione dell'intero programma e la generazione di codice tempo di collegamento, ma è prevedibile.)

testo alternativo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.