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();
}
실행해 보면..
쿼리 구문도 보여주면서 소요 시간도 보여 줍니다.