나는 asp.net 페이지에 실행 시간을 측정하고자하는 코드가 들어 있습니다. 나는이 목적을 위해 아주 기본적인 도우미 클래스를 만들었습니다 ASP.NET 페이지의 시간 측정
public class Timing
{
private long m_ticksBefore;
private long m_ticksAfter;
public void Before()
{
m_ticksBefore = DateTime.Now.Ticks;
}
public void After()
{
m_ticksAfter = DateTime.Now.Ticks;
}
public void TraceTime(string note)
{
TimeSpan span = new TimeSpan(m_ticksAfter - m_ticksBefore);
System.Diagnostics.Trace.Write(string.Format("\n...Timing for {0}...\nTicks: \t{1}\nMilliseconds: \t{2}\nSeconds: \t{3}\n..................", note, span.Ticks, span.TotalMilliseconds, span.TotalSeconds));
}
}
내가 새로운 타이밍 객체를 생성하고 난에 TraceTime() 메서드를 호출 마지막으로 전()와 및 방법 후 모니터링하고자하는 코드를 포장 결과를 IDE의 출력 창에 출력하십시오.
이상한 점은 페이지에 대한 첫 번째 요청이 약 40 밀리 초의 예상 타이밍 결과를 가져 오지만 페이지 (F5)를 새로 고치면 실행 시간이 0 tick입니다. 심지어 감시 지역 내에서 다른 코드의 실행을 강제 새로운 매개 변수를 사용하여 페이지를 실행하는 것은 내가 System.Diagnostics.StopWatch를 사용하는 경우가 평면은 0
대신 내가 훨씬 더 현실적인 결과
Stopwatch watch1 = Stopwatch.StartNew();
//Some code to monitor
watch1.Stop();
System.Diagnostics.Trace.Write(watch1.ElapsedTicks);
나에게 얻을 밝혀 ... 코드는 매우 비슷한 것 같다 나는 첫 번째 방법은 출력 현실적인 결과를 실패하는 이유를 찾을 수 없습니다
이 장면 뒤에 수행되는 최적화 문제의 일종 것 같다,하지만 난 정말하지 않습니다 그것을 얻으십시오. 아마도 개인적인 타이밍 문제, 즉 침대 시간 문제 때문일 수 있습니다 ...
문제는 동일한 코딩이 한 상황에서 40ms, 다른 시나리오에서 0ms를 취하고 있다는 것입니다. 물론 측정중인 코드는 다시 게시 시나리오에서 다르게 반응 할 수 있지만 언급하지 않았습니다. –
요점은 실제로 0ms가 아니라는 것입니다. 여전히 상당히 떨어지지 만 ~ 40ms ~ <10ms는 ~ 40ms ~ 0ms보다 훨씬 그럴듯합니다. – stevemegson
그게 사실이야. –