재우니의 블로그

Cows

http://stackoverflow.com/a/31568406


npm 에서 miniprofiler 를 다운로드 받습니다. 

그리고 하나 더.. asp.net mvc 5 이면 MiniProfilter.MVC4 도 함께 다운로드 받습니다.


PM> Install-Package MiniProfiler

PM> Install-Package MiniProfiler.MVC4


그 다음에 global.asax 안에 기술합니다.

protected void Application_Start()
{
    ...
    // Setup profiler for Controllers via a Global ActionFilter
    GlobalFilters.Filters.Add(new ProfilingActionFilter());

    // initialize automatic view profiling
    var copy = ViewEngines.Engines.ToList();
    ViewEngines.Engines.Clear();
    foreach (var item in copy)
    {
        ViewEngines.Engines.Add(new ProfilingViewEngine(item));
    }
}


using StackExchange.Profiling;
...    
protected void Application_BeginRequest()
{
    if (Request.IsLocal)
    {
        MiniProfiler.Start();
    } 
}

protected void Application_EndRequest()
{
    MiniProfiler.Stop();
}

레이아웃이 있다면 아래 body 태그 위에 기재하면 됩니다.

    ...
    @StackExchange.Profiling.MiniProfiler.RenderIncludes()
</body>
</html>


web.config 에도 핸들러  기재 합니다.

<system.webServer>
    ...
    <handlers>
        ...
        <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*"
             type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified"
             preCondition="integratedMode" />
        ...
    </handlers>
</system.webServer>


만약에 entity framework 를 사용한다면, 별도로 추가해 줘야 할 게 있습니다.

npm 에서 MiniProfiler.EF6 설치 합니다.

그리고 Applicaiton_Start() 메소드에 추가 합니다.

    ...
    MiniProfilerEF6.Initialize();
}

사용법은 EFProfiledDbConnection 이며, 사용법은 아래와 같습니다.

private static DbConnection GetProfiledConnection() { return new EFProfiledDbConnection( new SqlConnection(ConfigurationManager.ConnectionStrings["연결자"].ConnectionString), MiniProfiler.Current); }


EF 가 아닌, 일반적인 sqlconnection 객체를 사용할 경우, 데이터 베이스에 연결하여 성능 확인을 해볼수도 있는데요.

public static IDbConnection GetOpenConnection()
{
    var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["conn연결자"].ConnectionString);
    connection.Open();
    MiniProfiler.Settings.SqlFormatter = new StackExchange.Profiling.SqlFormatters.SqlServerFormatter();
    return new ProfiledDbConnection(connection, MiniProfiler.Current);
}

그 다음, 해당 연결자를 가지고 dapper 로 실행해 봅니다.

using (var db = Util.GetOpenConnection())
{
    return db.Query<Book>("SELECT TOP 10 * FROM Book").ToList();
}

실행해 보면..

Cows

쿼리 구문도 보여주면서 소요 시간도 보여 줍니다.