Perché nessuno parla di compilazione parallela per .Net?

7

Le build sono lente e richiedono tempo. Possiamo far sì che MSBuild li parallelizzi, ma solo su una singola macchina, non attraverso un cluster. Perché nessuno ha ideato soluzioni di compilazione in cluster nello spazio .Net? So che tali soluzioni esistono nello spazio C ++ (ad es. IncrediBuild, Electric Cloud, ecc.) Ma noi sviluppatori .Net siamo costretti a costruire soluzioni enormi su singole macchine. Qualcuno sa se c'è qualche difficoltà tecnica irrisolvibile in questo?

Solo curiosi.

    
posta Dmitri Nesteruk 22.04.2011 - 21:25
fonte

2 risposte

6

"Perché nessuno ha ideato soluzioni di compilazione in cluster nello spazio .Net?"

Se la compilazione doveva essere raggruppata:

  1. Il compilatore dovrà prima interrompere la compilazione in diversi thread che possono essere eseguiti su macchine indipendenti.
  2. Invia il codice a macchine diverse per la compliazione.
  3. Attendi fino a quando tutte le macchine hanno completato il loro compito
  4. Ottieni i risultati da tutte le macchine nel cluster.
  5. Metti insieme i risultati e collegali.

I passaggi 1 e 5 dipendono dalla natura del progetto: troppe interdizioni e il numero di attività distribuibili sono drasticamente ridotti. I passaggi 2 e 4 dipendono dallo stato della rete. Il tempo impiegato per inviare e recuperare i file oggetto si aggiunge al tempo di compilazione e supera il vantaggio del clustering. A seconda del progetto, probabilmente si potrebbe finire con lo stesso tempo per la compilazione su una singola macchina come faresti per un cluster.

    
risposta data 23.04.2011 - 07:21
fonte
1

Praticamente qualsiasi sistema CI lo fa. Se stai parlando in modo specifico sulla macchina di sviluppo: Automated Build Studio è uno di questi esempi .

Detto questo, la maggior parte dei prodotti su cui ho lavorato con / non richiedono mai una ricostruzione completa sulla macchina di sviluppo poiché il codice di solito è abbastanza abbinato e gli sviluppatori raramente hanno bisogno di apportare modifiche a molti diversi gruppi tra i check-in.

    
risposta data 22.04.2011 - 22:53
fonte

Leggi altre domande sui tag