Programming/C# & Unity

C# DateTime.Now 속도

장형이 2022. 7. 13. 11:20

개요

개발 중 퍼포먼스 측정을 위하여 소요 시간을 아주 잦게 해야하는 로직이 있었다.

이때 제일 익숙하게 사용하는 DateTime.Now를 사용하면 느리지 않을까 싶어서 알아 보았다.

 

요약

DateTime.Now > StopWatch > DateTime.UtcNow

순으로 무거우니 빠른 계산은 UtcNow를 사용하고, 정밀 계산이 필요하면 StopWatch를 사용하자.

 

내용

1. DateTime.UtcNow

UtcNow쪽을 살펴보면 단순히 SystemTime을 가져오는 것이 전부 인것으로 보인다.

2. StopWatch
StopWatch는 HighResoulution이 켜져있다면 좀 더 무겁고 정밀한 계산을 하고, 그게 아니라면 위의 UtcNow를 사용한다.

하지만 대부분의 경우 QPC가 깔려있어서 QPC를 사용하며 UtcNow보다 느리다고 한다.

3. DateTime.Now

Now는 UtcNow를 가져와서 Offset을 측정해서 더하는 작업을 하는데, 저 안의 함수의 내용이 OS에다가 이번 년도 정보를 요청하고 DT를 더하고 빼고하는 작업이 많아서 제일 복잡하고 느리다.

 

참고

https://stackoverflow.com/questions/28637/is-datetime-now-the-best-way-to-measure-a-functions-performance