2010-04-05 2 views
11

Mi chiedevo se qualcuno sapeva se Visual Studio .NET aveva un processo di compilazione parallelo o no? Ho una soluzione con molti progetti, ogni progetto ha un sacco di markup/codice, un sacco di tipi, ecc. Stare seduti lì con intellisense lo gestisce fino a circa 700 MB. Ma i tempi di compilazione sono molto lenti e sembrano massimizzare solo uno dei miei due core della CPU.Più CPU/core saranno utili con i tempi di compilazione di VS.NET?

Significa che il processo di creazione è a thread singolo? La catena di dipendenze di build della mia soluzione non è lineare, quindi non vedo perché non sia possibile creare parallelamente alcuni progetti. Ricordo che Joel Spolsky stava scrivendo sul suo nuovo SSD, e come non fosse d'aiuto nei tempi di compilazione, ma non menzionava quale compilatore stava usando. Stiamo usando VS 2005. Qualcuno sa come funziona la compilazione? Ed è diverso/migliore nel 2008/2010?

EDIT: Un sacco di buone risposte, qui, ma sono interessato in particolare in C# e ASP.NET. Nessun amore per noi gente del web?

+0

Usi dei plugin VS che potrebbero consumare troppe risorse? La tua macchina ha una RAM sufficiente che il più possibile può essere memorizzata nella RAM senza doverlo scambiare? –

+0

Vedi anche http://stackoverflow.com/questions/1814015/was-visual-studio-2008-or-2010-written-to-use-multi-cores – Brian

+0

Mi stavo chiedendo della ram.questo è un laptop con 2 core e 3GB. Non sembra molto, ma se il processo devenv.exe utilizza solo 700-900 MB, ho bisogno di più? – LoveMeSomeCode

risposta

9

MSBuild (che VS utilizza per creare build, da 2005/.NET2) supporta versioni parallele. Di default VS imposterà il massimo grado di parallelismo al numero di processori. Usa gli strumenti | Opzioni | Progetti e soluzioni | Crea ed Esegui per sovrascrivere questo valore predefinito.

Ovviamente qualsiasi build potrebbe avere una capacità più limitata (o non) di consentire le build parallele. Per esempio. solo un assieme in una soluzione non fornisce alcun ambito da costruire in parallelo. Allo stesso modo un numero elevato di assembly con molte dipendenze potrebbe bloccare il parallelismo (A dipende da B, C dipende da A & B, D dipende da C non ha spazio per le versioni parallele).

(NB. Per C++, in VS 2005 & 2008 utilizza un proprio sistema di build, nel 2010 C++ sarà inoltre costruito con MSBuild.)

+0

I miei tempi di compilazione VC++ 2008 sono passati da 50 minuti a 5 (con/MT) quando sono passato da un P4 HT a un nuovo Core i7 Q a una velocità di clock inferiore (anche con turbo boost). So che il processore non è stata l'unica parte migliorata, ma sono rimasto comunque molto colpito. –

+0

@mmyers: una build può essere limitata dall'IO del disco, spazio di memoria, larghezza di banda della memoria o CPU --- e diversi in momenti diversi della build. In generale si desidera la maggior parte di tutte quante è ragionevolmente possibile (ad es. Budget :-(applicare). Una build specifica potrebbe essere aiutata da una più di un'altra, ma il prossimo progetto potrebbe essere limitato altrove – Richard

+0

Sì, sono d'accordo. A giudicare dai grafici della CPU, penso che il mio collo di bottiglia sia ora la velocità del disco rigido (entrambi i sistemi hanno unità da 7200 RPM) Quindi il mio prossimo aggiornamento sarà un SSD non appena i migliori saranno convenienti –

1

Con VS2k5 dipende da quale lingua si sta cercando di utilizzare. C/C++ ha il supporto 'sperimentale' per il multi-threaded building, ma questa funzione non è ufficialmente supportata fino a 2k8 usando il/m: switch

2

vorrei suggerire che un drive SSD fornirebbe il più grande vantaggio explicitly for builds

SuperUser che confuta anche l'articolo di Joel

SO asking for best laptop etc: discussioni su SSD, core, come funziona VS ecc

Qualifier: I acquistato un SSD Intel per uso domestico un mese o tre fa. Lordy è veloce e probabilmente il miglior pezzo di kit che abbia mai comprato tranne il mio Voodoo 2 ...

+1

So che ho fatto questa domanda come 2 anni fa, ma da allora ho comprato 3 SSD e i miei tempi di costruzione sono CRAZY veloci. – LoveMeSomeCode

0

Ho usato build paralleli in Visual Studio 2008. Velocizza le cose, ma ha molti fastidiosi effetti collaterali.

Spesso mi capita di avere build non riuscite perché alcune compilazioni non sono riuscite, ma perché VS non è stato in grado di scrivere in un database di simboli bloccato. Ho anche ottenuto dei risultati Intellisense davvero incasinati. A volte devo ripetere la costruzione due o tre volte per ottenere un successo finale.