当我使用以下函数创建上下文时,分析器显示比标准 EF(版本 4)上下文创建方法增加了大约 300 毫秒。是否有另一种方法可以实现更好的性能?它违背了性能分析的目的。
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);
}
第一个是使用上面的函数来创建上下文。第二种是使用标准的 EF 上下文创建方法。以下是使用 mvc-mini-profiler 的性能差异:
探查器 EF 上下文:89.1
部分 DB 命中:317.9
正常 EF 上下文:0.1
一些数据库命中:7.4
更新2:
我在 Visual Studio 中做了一些分析,看起来主要耗时的操作是 MvcMiniProfiler.Helpers.StackTraceSnippet.Get() ,其中有一个对 System.Diagnostics.StackTrace..ctor(bool) 的调用。这需要很长时间才能完成,似乎是上述延迟的原因。
我推了一个分析器的变更集这允许禁用堆栈跟踪,因为大量查询可能会影响分析。
只需在应用程序启动期间进行以下设置:
MiniProfiler.Settings.ExcludeStackTraceSnippetFromSqlTimings = true;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)