@WVDominick Можете ли вы снова запустить встроенный профилировщик, чтобы увидеть, где он застрял?

я создаю свой контекст, используя следующую функцию, профилировщик показывает увеличение на 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:

Профилировщик EF Контекст: 89.1
Некоторая БД Хит: 317,9

Нормальный контекст EF: 0,1
Некоторые БД Хит: 7.4

ОБНОВЛЕНИЕ 2: Я выполнил некоторое профилирование в Visual Studio, и похоже, что основная трудоемкая операция - это MvcMiniProfiler.Helpers.StackTraceSnippet.Get (), и внутри нее есть вызов System.Diagnostics.StackTrace..ctor (bool). Это занимает много времени и кажется причиной вышеуказанной задержки.

Ответы на вопрос(1)

Ваш ответ на вопрос