我有很多小動作(每頁10-30個),它們是遞歸調用的一部分,所以我不能輕易將它們計爲探查器中的單個步驟。當我只需要總數時,我會得到30個不同的櫃檯。MVC mini profiler - 手動添加步驟
是否有一種簡單直接的方式將手動步驟添加到迷你分析器?或者讓它總結具有相同名稱的步驟?
此外,是否有可能以某種方式在那裏放置文本信息,而不僅僅是計時?
我有很多小動作(每頁10-30個),它們是遞歸調用的一部分,所以我不能輕易將它們計爲探查器中的單個步驟。當我只需要總數時,我會得到30個不同的櫃檯。MVC mini profiler - 手動添加步驟
是否有一種簡單直接的方式將手動步驟添加到迷你分析器?或者讓它總結具有相同名稱的步驟?
此外,是否有可能以某種方式在那裏放置文本信息,而不僅僅是計時?
你想在using語句中「包裹」你的遞歸調用。類似這樣的:
using (profiler.Step("Step A"))
{
// something recursive here
Thread.Sleep(100);
}
「步驟A」將是您的呼叫總數。在使用聲明中,你可以做任何你想做的事情。 「步驟A」可以是任何你想要的信息。你可以把任何字符串值放在那裏,它會顯示在分析器中。您也可以在不使用的情況下僅通過「步驟」添加簡單的文本信息。
MiniProfiler.Current.Step("Some code after this");
這將只需插入一行到分析器輸出窗口。我用它來吐出異常或其他調試信息。
我也需要這個,所以我做了這個小東西。它工作得很好。 MiniProfiler中很多有用的屬性都是內部的或類似的,所以有些代碼是從MiniProfiler源複製的。還要注意,因爲它是用於內循環的,所以它不會舍入到1/10毫秒。
public class GroupTiming : IDisposable
{
private Timing _timing;
private MiniProfiler _profiler;
private readonly Stopwatch _sw;
public GroupTiming(MiniProfiler profiler, Timing timing)
{
_timing = timing;
_profiler = profiler;
_profiler.Head = _timing;
_sw = new Stopwatch();
_sw.Start();
}
public void Dispose()
{
_timing.DurationMilliseconds += (decimal)(1000*_sw.ElapsedTicks)/(decimal)Stopwatch.Frequency;
_profiler.Head = _timing.ParentTiming;
}
}
public static class MiniProfilerExtensions
{
public static IDisposable StepGroup(this MiniProfiler profiler, string name)
{
return profiler == null ? null : profiler.StepGroupImpl(name);
}
private static IDisposable StepGroupImpl(this MiniProfiler profiler, string name)
{
Timing timing = null;
if(profiler.Head.Children != null)
{
timing = profiler.Head.Children.SingleOrDefault(_ => _.Name == name);
}
if(timing == null)
{
using(timing = new Timing(profiler, profiler.Head, name)) { }
}
return new GroupTiming(profiler, timing);
}
}
我不想包裝整個事情,我只是想測量遞歸方法內的特定代碼運行需要多長時間。我想我可以自己測量一下,然後在步驟名稱中添加一個步驟,但隨後它將始終處於平凡的部分,具有不正確的計時等等。我希望有一個乾淨的方法可以做它 – Madd0g 2012-03-18 12:59:07
今天我玩了這一點,我找不到乾淨的方式去做你想做的事。您可以手動設置兒童的時間持續時間,但它會嵌套層次結構和實際持續時間。基於我的測試,它會出現在「微不足道」的部分,無論如何因爲它出現的時間是負的。我建議您在此處將其作爲功能請求提交:http://code.google.com/p/mvc-mini-profiler/issues/list – 2012-03-19 14:00:54