以下の関数を使用してコンテキストを作成すると、プロファイラーは標準の 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);
}
この最初のものは、上記の関数を使用してコンテキストを作成しています。2 つ目は、標準の EF コンテキスト作成方法を使用することです。mvc-mini-profiler を使用した場合のパフォーマンスの違いは次のとおりです。
プロファイラー EF コンテキスト: 89.1
一部の DB ヒット: 317.9
通常の EF コンテキスト: 0.1
一部の DB ヒット: 7.4
更新 2: Visual Studio でいくつかのプロファイリングを行いましたが、主な時間のかかる操作は MvcMiniProfiler.Helpers.StackTraceSnippet.Get() であり、その中に System.Diagnostics.StackTrace..ctor(bool) への呼び出しがあるようです。これは完了するまでに長い時間がかかり、上記の遅延の原因と思われます。