Domanda

Il nostro server di generazione sta prendendo troppo tempo per costruire uno dei nostri progetti in C++.Utilizza Visual Studio 2008.C'è un modo per ottenere devenv.com per registrare il tempo impiegato per la realizzazione di ogni progetto nella soluzione, in modo che io so dove concentrare i miei sforzi?

Migliorato l'hardware non è un'opzione, in questo caso.

Ho provato impostando l'uscita di verbosità (sotto Strumenti / Opzioni / Soluzioni e Progetti / Costruire ed Eseguire / MSBuild progetto di costruzione di uscita prolissità).Questo non sembra avere alcun effetto nell'IDE.

Durante l'esecuzione di MSBuild dalla riga di comando (e, per Visual Studio 2008, ha bisogno di essere MSBuild v3.5), si visualizza il tempo totale trascorso alla fine, ma non IDE.

Volevo una volta preso report per ogni progetto nella soluzione, in modo che io possa capire dove il processo di generazione stava prendendo il suo tempo.

In alternativa, dal momento che abbiamo effettivamente utilizzare NAnt per guidare il processo di generazione (usiamo Jetbrains TeamCity), c'è un modo per ottenere NAnt per dirmi che il tempo impiegato per ogni passo?

È stato utile?

Soluzione

Menu StrumentiOpzioniProgetti e SoluzioniVC++ Impostazioni del ProgettoCostruire Tempi dovrebbe funzionare.

Altri suggerimenti

Vai a Strumenti → Opzioni → Progetti e Soluzioni → compilare ed Eseguire → MSBuild progetto di costruzione di uscita livello di dettaglio - impostato su "Normale" o "Mappa", e il tempo di costruzione verrà visualizzato nella finestra di output.

Visual Studio 2012 fino al 2017

  • Per MSBuild Progetti (ad es.tutti .Net-Progetti):
    Fare clic su Tools -> Options quindi selezionare Projects and Solutions -> Build and Run.Cambiare MSBuild project build output verbosity per Normal.Quindi verrà visualizzato il Tempo Trascorso in ogni Soluzione di Progetto si costruisce.Ma c'è unfortunatily senza Tempo Trascorso Somma su tutto il progetto.Si vedrà anche la Build iniziato Timestamp

  • PER C/C++ Progetto:

Fare clic su Tools -> Options quindi selezionare Projects and Solutions -> VC++ Project Settings.

Cambiare Build Timing per Yes.

Per Visual Studio 2012 si potrebbe utilizzare il Costruire Monitor estensione.

Se sei bloccato su VS2005 si potrebbe utilizzare il vs-costruire-timer plugin.Al termine di una build mostra il tempo totale impiegato e un (opzionale) riepilogo di ciascuna della durata del progetto.

Disclaimer;L'ho scritto.E sì, ho bisogno di creare un programma di installazione...un giorno!

Strumenti->Opzioni->Progetti e Soluzioni->Build and Run->

Impostare "MSBuild progetto di costruzione di uscita verbosità" da "Minimo" a "Normale"

Dal momento che la tua domanda implica l'utilizzo di DevEnv dalla riga di comando, mi permetto anche di suggerire l'utilizzo di MSBuild (che può costruire .sln file senza modifiche).

msbuild /fl /flp:Verbosity=diagnostic Your.sln

msbuild /? mostra altre opzioni utili per la filelogger.

Se si desidera visualizzare il costruire è possibile utilizzare IncrediBuild.IncrediBuild oggi è disponibile anche nella versione autonoma di modalità (non distribuiti, ma solo per l'uso su 8 core sulla vostra macchina locale) per Visual Studio 2015 Update 1

Disclaimer:Io lavoro per IncrediBuild

Sono finito qui perché volevo solo la data e l'ora inclusi nella generazione di uscita.Dovrebbero essere altri a cercare qualcosa di simile è semplice come l'aggiunta di echo %date% %time% per la Pre-compilazione e/o Post-generazione di eventi nell'ambito del progetto, ProprietàCompilareCostruire Eventi.

Fare una build prima e vedere che il progetto è apparso per la prima volta nella generazione di output (Ctrl + Casa nella finestra di output).Fare clic destro il progetto → Le Proprietà Del ProgettoCompilareCostruire EventiPre-build.E echo ###########%date% %time%#############.

Così ogni volta che vedi build risultati (o durante la compilazione) fare Ctrl + Casa nella finestra di output.E da qualche parte in quella zona l'ora e la data fissa il tuo volto!

Oh, e si potrebbe finire l'aggiunta di questi dettagli, a molti progetti come l'ordine di generazione può cambiare :)


Ho trovato una soluzione migliore!###

StrumentiOpzioniProgetti & SoluzioniCompilare ed EseguireMSBuild progetto di costruzione di uscita verbosità = Normale (o sopra Minimo).Questo aggiunge il tempo in principio superiore della finestra di uscita. Ctrl + Casa nella finestra di output deve fare.

Se vogliamo vedere quanto tempo i progetti hanno quindi Progetti & SoluzioniVC++ Impostazioni del ProgettoCostruire Timing = sì.Esso è applicabile a tutti i progetti;"VC++" è fuorviante.

Se si desidera richiamare un programma esterno che permette di monitorare la vostra totale tempi di costruzione, è possibile utilizzare la seguente soluzione per VS 2010 (e forse più).Il codice riportato di seguito utilizza CTime da Casey Muratori.Naturalmente si può anche usare per stampare semplicemente il tempo di costruire.

Aprire esplora macro, e incollare il seguente prima di End Module:

Dim buildStart As Date
Private Sub RunCtime(ByVal StartRatherThanEnd As Boolean)
    Dim Arg As String
    Dim psi As New System.Diagnostics.ProcessStartInfo("ctime.exe")
    If StartRatherThanEnd Then
        psi.Arguments = "-begin"
    Else
        psi.Arguments = "-end"
    End If
    psi.Arguments += " c:\my\path\build.ctm"
    psi.RedirectStandardOutput = False
    psi.WindowStyle = ProcessWindowStyle.Hidden
    psi.UseShellExecute = False
    psi.CreateNoWindow = True
    Dim process As System.Diagnostics.Process
    process = System.Diagnostics.Process.Start(psi)
    Dim myOutput As System.IO.StreamReader = process.StandardOutput
    process.WaitForExit(2000)
    If process.HasExited Then
        Dim output As String = myOutput.ReadToEnd
        WriteToBuildWindow("CTime output: " + output)
    End If
End Sub

Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin
    WriteToBuildWindow("Build started!")
    buildStart = Date.Now
    RunCtime(True)
End Sub

Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
    Dim buildTime = Date.Now - buildStart
    WriteToBuildWindow(String.Format("Total build time: {0} seconds", buildTime.ToString))
    RunCtime(False)
End Sub

Private Sub WriteToBuildWindow(ByVal message As String)
    Dim win As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
    Dim ow As OutputWindow = CType(win.Object, OutputWindow)
    If (Not message.EndsWith(vbCrLf)) Then
        message = message + vbCrLf
    End If
    ow.OutputWindowPanes.Item("Build").OutputString(message)
End Sub

Risposta presa da qui e qui.

Opzioni -> Progetti e Soluzioni -> Progetto di VC++ Impostazioni -> Build Tempi

enter image description here

Ho creato un'estensione per misurare i tempi di costruzione e di presentare l'ordine degli eventi in un grafico: Visual Studio Build Timer.

enter image description here

È disponibile su visual studio, luogo di mercato e di opere per VS2015 e VS2017.

Trovo la presentazione visiva molto utile.Oltre a dimostrare che a fare progetti a lungo, essa mostra anche le dipendenze tra di loro, cioèprogetti che aspettare che gli altri per completare prima di iniziare.In questo modo è possibile individuare i colli di bottiglia nel costruire e vedere cosa dipendenze bisogno di rompere in modo da aumentare la parallelizzazione di compilazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top