Когда я создаю свой контекст, используя приведенную ниже функцию, профилировщик показывает увеличение примерно на 300 мс по сравнению со стандартным методом создания контекста EF (версия 4). Есть ли другой способ сделать это, который имеет лучшую производительность? Это противоречит цели профилирования производительности как таковой.
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:
Контекст Profiler EF: 89,1
Некоторые обращения к БД: 317,9
Обычный контекст EF: 0,1
Некоторое обращение к БД: 7,4
ОБНОВЛЕНИЕ 2: я выполнил профилирование в Visual Studio, и похоже, что основной трудоемкой операцией является MvcMiniProfiler.Helpers.StackTraceSnippet.Get(), а внутри нее есть вызов System.Diagnostics.StackTrace..ctor(bool). Это занимает много времени и, по-видимому, является причиной вышеупомянутой задержки.