개요
개발 중 퍼포먼스 측정을 위하여 소요 시간을 아주 잦게 해야하는 로직이 있었다.
이때 제일 익숙하게 사용하는 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를 더하고 빼고하는 작업이 많아서 제일 복잡하고 느리다.
참고
'Programming > C# & Unity' 카테고리의 다른 글
C# Async Await 원리 (2) | 2022.11.16 |
---|---|
C# Enum Flag (2) | 2022.09.16 |
C# discards (안쓰는 out var , 안쓰는 tuple 숨기기) (0) | 2022.02.08 |
C# 가비지 컬렉션 루트 오브젝트 (GC root object) (0) | 2021.10.31 |
C# Tuple, ValueTuple (0) | 2021.09.03 |