[.net] DateTime.UTCNow + TimeSpan이 DateTime.Now보다 빠르다
DateTime.Now와 DateTimeOffset.Now는 느리고 DateTime.UTCNow는 빠르다. 후자를 이용해 한국 시간을 알려면 9시간을 더해야 한다. 그렇다면 이렇게 구한 시간과 전자 가운데 어느 게 더 빠를까? chatgpt는 전자가 더 빠르다고 답하기도 하고 반대로 답하기도 한다. 물어볼 때마다 다르다. 전자가 더 느리다.
textBox1.Clear();
TimeSpan offset = new(9, 0, 0);
TimeSpan timeSpan;
Stopwatch stopwatch = new();
stopwatch.Restart();
for (int i = 0; i < 2000000; i++)
{
timeSpan = DateTime.Now.TimeOfDay;
}
stopwatch.Stop();
textBox1.AppendText($"{stopwatch.ElapsedTicks} \r\n");
stopwatch.Restart();
for (int i = 0; i < 2000000; i++)
{
timeSpan = DateTime.UtcNow.TimeOfDay;
}
stopwatch.Stop();
textBox1.AppendText($"{stopwatch.ElapsedTicks} \r\n");
stopwatch.Restart();
for (int i = 0; i < 2000000; i++)
{
timeSpan = DateTime.UtcNow.TimeOfDay + offset;
}
stopwatch.Stop();
textBox1.AppendText($"{stopwatch.ElapsedTicks} \r\n");
506482
431571
446941
표준 시간과의 차이를 표준 시간에 더하느라 조금 느려지기는 하지만 Now보다는 빠르다. 10% 넘게 차이난다.