使用mvc-mini-profiler降低EF分析性能

WVD*_*ick 9 profiling entity-framework asp.net-mvc-3 mvc-mini-profiler

当我使用下面的函数创建我的上下文时,分析器显示从标准EF(版本4)上下文创建方法增加大约300ms.还有另一种方法可以做到更好的表现吗?它失败了性能分析的目的.

    public static Models.MyEntities GetContext()
    {
        var profiler = MiniProfiler.Current;
        var sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString);
        var profiledConnection = MvcMiniProfiler.Data.ProfiledDbConnection.Get(sqlConn, profiler);
        return ObjectContextUtils.CreateObjectContext<Models.MyEntities>(profiledConnection);
    }
Run Code Online (Sandbox Code Playgroud)

第一个是使用上面的函数来创建上下文.第二种是使用标准的EF上下文创建方法.以下是使用mvc-mini-profiler的性能差异:

Profiler EF上下文:89.1
一些数据库命中:317.9

正常EF上下文:0.1
一些数据库命中:7.4

更新2:我在Visual Studio中进行了一些分析,看起来主要的耗时操作是MvcMiniProfiler.Helpers.StackTraceSnippet.Get(),并且在其中有一个对System.Diagnostics.StackTrace..ctor(bool)的调用.这需要很长时间才能完成,似乎是导致上述延迟的原因.

Jar*_*xon 5

我已经向分析器推送了一个变更集,允许禁用堆栈跟踪,因为大量查询可能会影响分析。

只需在应用程序启动期间设置以下设置:

MiniProfiler.Settings.ExcludeStackTraceSnippetFromSqlTimings = true;
Run Code Online (Sandbox Code Playgroud)