2009-10-13 6 views
2

.NET 응용 프로그램에서 매우 정확한 타이밍에 액세스해야합니다..NET의 정확한 시간

마이크로 초 정밀도가 필요합니다.

.NET에서이 작업을 수행하는 쉬운 방법이 있습니까?

+0

이 질문은 http://stackoverflow.com/questions/307582/how-frequent-is-datetime-now-updated-or-is-there-a-more-precise-의 중복 된 것으로 보입니다. api-to-get-the,하지만 나는 그 대답을 더 좋아한다. – Abacus

답변

4

Stopwatch 클래스는 얻을 수있는 최상의 정밀도이며 고주파수 타이머를 사용합니다.
스톱워치의 빈도는 CPU의 빈도에 따라 다르지만 일반적으로 초당 수백만 배입니다.

CPU가 고주파수 타이머를 제공하지 않으면 클래스는 초당 100-50 번 범위의 시스템 타이머로 대체됩니다.

http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx

예 :이 정도의 때문에

6

System.Diagnostics.Stopwatch은 타이밍 세분화의 정도에 적합한 클래스입니다,하지만 그들은 다른 두 가지가 당신이, 대신 ElapsedTicks 재산을 당신의 스톱워치 개체의 Elapsed.Ticks 속성을 사용하십시오. (도트 없음)

  • ElapsedTicks

    스톱워치의 틱 수를 의미하고, 따라서 경과 시간을 계산하기 위해 (모든 시스템에서 동일하지 않다) Stopwatch.Frequency와 협력하여 사용되어야한다.
  • Elapsed.Ticks ( 점)은 Timespan 틱의 수를 제공하며 스톱워치 주파수에 종속되지 않습니다.

이것은 아마도 닷넷에서 미묘한 가능성 오류 중 하나입니다.

또한, 스톱워치 매우 세분화 된 것을 조심하지만, 필요없는 모든 정확한 (용어의 당신의 정의에 따라). 스톱워치가 반환 한 경과 시간은 시스템 시간에서 벗어나는 경향이 있습니다.

내 랩톱에서 Stopwatch는 24 시간 동안 거의 5 초 앞당겨 실행되며 일부 컴퓨터에서는이 영향이 훨씬 더 심합니다.

시간이 짧으면 물론이 효과가 전혀 중요하지 않습니다.

+0

Stopwatch는 CPU의 절전 수단으로 인해 노트북에서 부정확 할 수 있지만 최신 Intel i7 이상에서는이 문제가 발생하지 않습니다. 즉, 작업 PC에서 타이밍을 수행하는 경우 작업이 훨씬 정확 해집니다. – Contango

관련 문제