(연관된 글이 2개 있습니다.)
'시작하세요! C# 7.1 프로그래밍'으로 공부하고 있습니다.
375쪽 Stopwatch를 정리하던 도중에 ElapsedTicks로 밀리초와 초를 나타내셨더라구요.
Stopwatch에는 ElapsedTicks말고도 ElapsedMilliseconds도 있길래 단위만 다르게 표현하는 프로퍼티정도로 생각했습니다.
근데 알고리즘을 측정해서 ElapsedTicks와 ElapsedMilliseconds와 비교했더니 값이 전혀 다르더라구요.
ElapsedMilliseconds와 Stopwatch.Elapsed.TotalMilliseconds가 비슷하고 ElapsedTicks는 Stopwatch.Frequency와 비슷하더군요.
Stopwatch.Frequency가 자신의 컴퓨터가 초당 몇 틱을 측정할 수 있는지 알려주는 필드인데 DateTime에서 배웠던 100ns를 나타내는 Ticks 프로퍼티와 Stopwatch에서 말하는 Ticks는 다른 의미인 것 같습니다.
저는 ElapsedTicks 값과 Stopwatch.Frequency가 같을 수록 1초에 가깝다는 의미이므로 375쪽에서 설명한 것처럼 단순히 (ElapsedTicks / 10000)으로 밀리초를 나타낼 수 없고 1000으로 더 나눈다고 해서 초로 나타낼 수 없다고 생각합니다.
이를 어떻게 이해야하는지, 밀리초로 표현하는 다른 방법이 있는지 궁금합니다.
이 아래는 제가 쓴 코드이며 환경은 비주얼 스튜디오 2017, 닷넷 4.7.1입니다.
private static long Sum() // 그냥 측정용 메소드
{
long sum = 0;
for (int i = 0; i < 500000000; ++i)
sum += i;
return sum;
}
public static void Main()
{
Stopwatch st = new Stopwatch();
st.Start(); // 알고리즘을 시작하기 전 스탑워치를 킨다.
Sum(); // 알고리즘을 돌린 후
st.Stop(); // 알고리즘을 돌린 후 스탑워치를 정지한다.
Console.WriteLine("Millisecond : " + st.ElapsedMilliseconds); // 밀리초로 나타낸다.
Console.WriteLine("Millisecond : " + st.Elapsed.TotalMilliseconds); // 밀리초를 double로 나타낸다.
Console.WriteLine("Total Ticks : " + st.ElapsedTicks); // 시간이라기보다 측정 틱 수인거같은데?
Console.WriteLine("second : " + Stopwatch.Frequency); // 내 컴퓨터가 초당 몇 틱을 측정할 수 있는지 알려줌
}
[연관 글]
[최초 등록일: ]
[최종 수정일: 7/25/2018]