Asp.net mvc 3 MVC迷你探查器-手动添加步骤
我有很多小动作(每页10-30个),它们是递归调用的一部分,所以我不能简单地将它们作为分析器中的一个步骤来计算。当我只需要总数时,我得到了30个短而不同的计数器 是否有一种简单而直接的方法可以手动向mini profiler添加步骤?或者让它用相同的名字总结步骤 此外,是否有可能以某种方式将文本信息放在那里,而不仅仅是时间 您希望将递归调用“包装”到using语句中。大概是这样的:Asp.net mvc 3 MVC迷你探查器-手动添加步骤,asp.net-mvc-3,mvc-mini-profiler,Asp.net Mvc 3,Mvc Mini Profiler,我有很多小动作(每页10-30个),它们是递归调用的一部分,所以我不能简单地将它们作为分析器中的一个步骤来计算。当我只需要总数时,我得到了30个短而不同的计数器 是否有一种简单而直接的方法可以手动向mini profiler添加步骤?或者让它用相同的名字总结步骤 此外,是否有可能以某种方式将文本信息放在那里,而不仅仅是时间 您希望将递归调用“包装”到using语句中。大概是这样的: using (profiler.Step("Step A")) { // somethi
using (profiler.Step("Step A"))
{
// something recursive here
Thread.Sleep(100);
}
“步骤A”将是您的呼叫总数。在using语句中,你可以做任何你想做的事情。“步骤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 );
}
}
我不想把整个过程都包装起来,我只想测量递归方法中的特定代码段运行所需的时间。我想我可以自己测量一下,然后在步骤名称中添加一个带有计时的步骤。。。但是,它总是会在琐碎的部分,有错误的时间,等等。。。我希望有一个干净的方法来做这件事我今天玩了一会儿,但我找不到一个干净的方法来做你想做的事。您可以通过子项手动设置计时的持续时间,但它会扰乱嵌套层次结构和实际持续时间。根据我的测试,它无论如何都会出现在“琐碎”部分,因为它的持续时间是负数。我建议在此处将其作为功能请求提交: