2009-07-29 10 views
5

Un'app legacy su cui sto lavorando richiede circa 2 ore per la creazione. Il progetto ha circa 170 progetti con circa 150 C++ non gestiti e gli altri 30 C# .Net 2.0.Modi per accelerare i tempi di costruzione? (C#/Unmanaged C++)

Quali sono alcuni suggerimenti su come migliorare i tempi di compilazione per qualcosa di simile?

+1

domande simili sono state poste prima. Fai una ricerca di "incredibuild" per trovarne un numero. – crashmstr

+0

Hai bisogno di crearlo da zero spesso o le build incrementali sono lente? –

+0

Siamo costretti a costruire da zero abbastanza spesso. Ogni volta che viene fatto un cambiamento per essere QC avremo bisogno di una build completa. – Kyle

risposta

8

Focus sui progetti C++ - sono quasi garantiti per essere il più grande canali di scolo di tempo per la costruzione.

Alcuni consigli su come ottenere il C++ costruire volte verso il basso:

  • Accertarsi che sei solo tra cui intestazioni che è necessario nei progetti C++!
  • utilizzare le dichiarazioni previsionali per quanto possibile nelle intestazioni invece di includere altre intestazioni
  • Utilizzare il/MP interruttore di costruire in parallelo, quando possibile
  • Usa astrazione efficace
  • Essere risparmiando nell'uso delle funzioni inline, dal momento che questi costano di più al momento della compilazione
  • ricevere le dipendenze corrette, in modo da non sta costruendo il più delle volte quello richiesto
  • utilizzare le intestazioni precompilate opportunamente

A parte questo, se stai parlando 2 volte un'ora di build, spesso c'è un buon mercato (in grande stile foto) soluzione semplice, come pure:

  • aggiornare l'hardware per contribuire a ridurre i tempi di calcolo
+0

100% d'accordo. Che compilatore usi? Controlla i sistemi di caching del compilatore appropriati (ad es.ccash per gcc) Gli SSD per il server di build valgono la pena di guardare –

+0

Principalmente uso MSVC, ma la maggior parte degli argomenti sopra sono strategie di compilazione C++ generiche. La domanda era probabilmente specifica per MSVC, dato che mescolava C++ e C#. –

2

si può provare il sistema di generazione distribuita Incredibuild: http://www.xoreax.com/visual_studio.htm

+0

Funziona anche per il collegamento? Alcuni dei miei fastidiosi tempi di costruzione sono dovuti al collegamento. –

0

Fai molteplici soluzioni per il progetto che includono solo sottoinsiemi rilevanti dei progetti e lasciare una soluzione eccellente per la stampa, ecc

4

Se si installa IncrediBuild su ogni macchina che ha bisogno di costruire distribuisce il processo di generazione tra tutte le macchine. Se vuoi davvero gettare l'hardware sul problema, puoi configurare alcune macchine dedicate che servono solo come client di IncrediBuild.

Su una scala diversa, assicurarsi che ogni progetto abbia intestazioni precompilate configurate correttamente.

2

È possibile utilizzare uno strumento come lint per verificare se sono presenti file di inclusione ridondanti nei progetti C++.

C'è anche un ottimo articolo su questo argomento allo Games from Within.

+0

Hmm sembra molto interessante. Grazie. – Kyle

Problemi correlati