2012-10-24 14 views
5

Questo è lo scenario che sto affrontando: sto utilizzando MiniProfiler per profilare alcune operazioni. Ma manca una funzionalità particolare che dovrò usare. C'è un file di impostazioni MiniProfiler che può permettermi di fare alcune configurazioni come cosa considerare per la profilazione e cosa no, cosa pensare come lento e cosa no, ecc. Ma queste sono impostazioni globali e si applicano a tutte le operazioni che vengono profilate. Cosa ho bisogno è di essere in grado di dire qualcosa di simile:Temporizzazione soglia per operazione utilizzando il mini profiler mvc

using (mvcminiprofiler.Step("OperationName", 1200) 
{ 
    //some C# code 
} 

Questo argomento '1200' significa che questa operazione è prevista per 1200 ms e non salvarlo di risultati al database se ci vuole niente di meno che o uguale a 1200 ms. Ma se impiega più di 1200 ms, salva questo tempo di risposta sul database. Quindi sto fondamentalmente parlando dei valori di soglia per operazione.

Sono disposto a scrivere un wrapper sul MiniProfiler per questo, ma non sono disposto a modificare il codice sorgente del mini profiler. In realtà abbiamo già costruito un piccolo framework attorno al mini profiler, ma non vorremmo cambiare il suo codice sorgente. Ma semplicemente estendono la sua funzionalità in qualche modo.

+0

Questo è difficile, si avrebbe bisogno di scorrere queste informazioni in IStorage qualche modo, chiederà Jarrod per avere uno sguardo –

+0

Si prega di fare :) Ha senso perché alcune operazioni che vogliamo al profilo e non stanno influenzando il sito in il tempo reale può avere una grande quantità di tempo. È quindi logico disporre di intervalli di soglia del livello operativo oltre alle soglie globali. Grazie! –

+0

Invece di un override su '.Step()', che dire '.StepIf (" Operation ", 1200)' invece? –

risposta

2

Ho appena aggiunti i seguenti nuovi metodi di estensione per MiniProfiler, disponibili in nuget 3.0.10-beta5 e superiori:

  1. MiniProfiler.StepIf(string name decimal minSaveMs, bool includeChildren = false)
  2. MiniProfiler.CustomTimingIf(string category, string commandString, deciml minSaveMs, string executeType = null)

Si dovrebbe essere in grado di utilizzare questi per fare esattamente cosa stai cercando di fare. Nel tuo caso, è necessario utilizzare il codice come questo:

using (MiniProfiler.Current.StepIf("Operation Name", 1200)) { 
    // do your stuff 
} 

Offriamo le includeChildren (il default è false) per impostare se utilizzare o meno il tempo registrato in profili figlio per determinare se salvare o meno questo CustomTiming .

Ulteriori informazioni in this GitHub Issue.

Problemi correlati