2011-08-16 17 views
6

Quando si usa il mini profiler, questo significa che il codice di produzione sarà 'sparpagliato' con l'uso dei blocchi?Con il mini-profiler

using (profiler.Step("Set page title")) 
{ 
    ViewBag.Title = "Home Page"; 
} 

Credo che se si tratta di 1-off test ho potuto rimuoverlo, ma di solito si desidera mantenere questi nella base di codice per la costante profilazione.

risposta

9

Questo è in realtà un cattivo esempio: di solito non si profilerebbe qualcosa di banale.

In definitiva, è elettivo ciò che si desidera profilo. C'è un gancio per cose come ADO.NET, ma se vuoi che profili le cose al di fuori di di questo, sì: devi dargli una mano.

Re "disseminato", beh, questo è soggettivo. L'approccio migliore consiste solitamente nel limitare la strumentazione alle operazioni di altissimo livello e quindi eseguire solo l'ingrandimento con operazioni più granulari quante sono necessarie (a causa di un problema identificato); per esempio, si potrebbe avere:

... 
using(profiler.Step("Refresh customer")) 
{ 
    // ... 
} 
... 

e solo quando si scopre che l'assunzione di 1800ms ingrandire:

... 
using(profiler.Step("Refresh customer")) 
{ 
    using(profiler.Step("Query LDAP")) 
    { ... } 
    using(profiler.Step("Query primary customer DB")) 
    { ... } 
    using(profiler.Step("Query aux db")) 
    { ... } 
    using(profiler.Step("Print, scan, and OCR")) 
    { ... } 
} 
... 

C'è anche un metodo .Inline(...) per i singoli comandi.

O se non si pensa che questo sia "littering":

  • sottolinea performance is a feature (e anzi, spesso un requisito) - è ok per avere il codice per supportare le caratteristiche! Infatti, è una forma di prova che si dispone considerato (e misurato) la realizzazione di un nuovo pezzo/alterata codice
  • è interamente contestuale come granulare ne rendono
  • fornisce quindi un livello significativo di dettaglio all'utente - senza folle quantità di trivia nel registro e senza la natura invasiva delle prestazioni della maggior parte del logging
+0

grande grazie, btw, come hai fatto quel dropdown su ogni pagina che emette i risultati? ha agganciato il profiler in qualche modo? Ad esempio, salvare ciascun log nella cache request.items? – codecompleting

+0

@codecompleting c'è un'API collegabile per fornire storage sia a breve che a lungo termine. Utilizza un archivio ASP.NET in-memory per impostazione predefinita, IIRC, ma internamente utilizziamo SQL-Server a lungo termine (è facile scrivere un plug-in per questo). Era questa la domanda? –

+0

Voglio fare qualcosa di simile: http://community.mediabrowser.tv/uploads/site_1/2314/profiler.png curioso di come si aggregano tutte le query per una determinata richiesta. usando request.items? – codecompleting

Problemi correlati