2012-10-24 3 views
5

Dies ist das Szenario, in dem ich mich befinde: Ich verwende MiniProfiler, um einige Operationen zu profilieren. Aber es fehlt eine bestimmte Funktionalität, die ich verwenden muss. Es gibt einen Einstellungsdatei-MiniProfiler, der mir einige Konfigurationen erlauben kann, zum Beispiel, was man beim Profiling beachten soll und was nicht, was als langsam und was nicht zu denken ist usw. Aber dies sind globale Einstellungen und gelten für alle Operationen, die profiliert werden. Was ich brauche, ist in der Lage sein, so etwas zu sagen:Threshold Timing pro Operation mit dem mvc mini Profiler

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

Dieses Argument ‚1200‘ bedeutet, dass dieser Vorgang 1200 ms dauern wird erwartet und es nicht die Ergebnisse in die Datenbank speichern, wenn es etwas weniger dauert als oder gleich 1200 ms. Wenn es jedoch mehr als 1200 ms dauert, speichern Sie diese Antwortzeit in der Datenbank. Ich spreche also im Grunde von Schwellenwerten pro Betrieb.

Ich bin bereit, einen Wrapper um den MiniProfiler dafür zu schreiben, aber ich bin nicht bereit, den Mini-Profiler-Quellcode zu ändern. Eigentlich haben wir bereits ein kleines Framework um den Mini-Profiler gebaut, aber wir möchten seinen Quellcode nicht ändern. Aber erweitern Sie einfach seine Funktionalität in mancher Hinsicht.

+0

Dies ist knifflig, Sie müssten diese Informationen in die IStorage irgendwie fließen, wird Jarrod bitten, einen Blick zu werfen –

+0

Bitte tun :) Es macht Sinn, weil einige Operationen, die wir profilieren wollen und die Website nicht beeinflussen Echtzeit kann einige große Zeit haben. Daher ist es sinnvoll, Schwellenwerte für die Operationsebene neben den globalen Schwellenwerten zu verwenden. Vielen Dank! –

+0

Statt einer Überschreibung für '.Step()', was ist stattdessen mit '.StepIf (" Operation ", 1200)'? –

Antwort

2

Habe ich nur noch die folgenden neuen Erweiterungsmethoden Miniprofiler, in nuget 3.0.10-beta5 und höher:

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

Sie sollten in der Lage sein, diese zu verwenden, um zu tun genau was du tun willst. In Ihrem Fall würden Sie folgenden Code verwenden:

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

Sie den includeChildren (Standard: false) verwenden können, ob oder nicht die Zeit ein in den Kindern Profile aufgezeichnet zu verwenden, wenn die Bestimmung, ob diese CustomTiming speichern .

Weitere Informationen in this GitHub Issue.

Verwandte Themen