[c#] 방법이 끝날 때 스톱워치를 중지해야합니까?

다음을 사용하여 간단한 측정을한다고 가정 해 봅시다. Stopwatch

public void DoWork()
{
    var timer = Stopwatch.StartNew();
    // some hard work
    Logger.Log("Time elapsed: {0}", timer.Elapsed);
    timer.Stop(); // Do I need to call this?
}

MSDN에 따르면 :

일반적인 Stopwatch 시나리오에서는 Start 메서드를 호출 한 다음 결국 Stop 메서드를 호출 한 다음 Elapsed 속성을 사용하여 경과 시간을 확인합니다.

타이머 인스턴스에 더 이상 관심이 없을 때이 메서드를 호출해야하는지 잘 모르겠습니다. Stop방법을 사용하여 “정리”해야합니까 ?

편집하다

Logger.Log (..) 는 로거 로그 전에timer.Elapsed 읽히 므로 비용이 들지 않습니다 .



답변

아니, 당신은 그것을 멈출 필요가 없습니다. Stop()경과 시간 추적을 중지합니다. 리소스를 확보하지 않습니다.


답변

아니요, 중지하거나 정리할 필요가 없습니다.

Stopwatch관리되지 않는 리소스를 사용하지 않습니다 (을 생각한 경우 IDisposable). 실제로 사용하지 않는 모든 (물론, 객체 자체에 의해 사용되는 메모리 제외) 모두에서 자원을! 또한 경과 시간을 측정하는 동안 CPU를 소비하지 않습니다!

.NET (전체 .NET 프레임 워크, 모노, .NET 코어)의 창 구현, 그것은 바로 호출을 QueryPerformanceCounter()필요로 할 때 윈도우 API (에 Start()Stop()와 읽을 때 Elapsed) 고해상도 타임 스탬프를 검색 할 수 있습니다.

Mono 및 .NET Core의 Linux 구현에서는 clock_gettime함수를 사용 하여 단조 증가하는 시간 값을 검색합니다.

구현 세부 사항에 대한 실제 호기심이있는 사람이라면 이 게시물을 읽으십시오 .


답변

Elapsed 값을 재사용하려면 Stop이 유용하다고 생각합니다.


답변

코드를 계산할 필요가 없으면 Stop ()을 사용할 필요가 없습니다.


답변