c# 실행에 걸리는 시간을 재어보자..
함수나 머 쓰레드 내에서 그 함수 혹은 쓰레드가 한번 실행되는데 걸리는 시간이 필요한 경우가 가끔 아주 가끔 있습니다.
이 시간을 계산하기 위한 클래스를 만들어보았습니다.
이름하여
HyperDuration
ㅋㅋ
각 함수는 아래와 같습니다.
Duration 값에 1000을 곱하면 ms 가 나오겠죠
.
.
.
.
다 알고있는 이야기였습니다..
ㅠ
쥐의 시점에서 본 고양이... 공포
최강..
이 시간을 계산하기 위한 클래스를 만들어보았습니다.
이름하여
HyperDuration
ㅋㅋ
public
class HyperDuration
{
[DllImport("Kernel32.dll")]
[DllImport("Kernel32.dll")]
private long m_startTime, m_stopTime;
public void Stop()
{
{
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(out long
lpPerformanceCount);
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long
lpFrequency);
private long m_startTime, m_stopTime;
private long m_freq;
public HyperDuration()
{
{
m_startTime = 0;
m_stopTime = 0;
if (QueryPerformanceFrequency(out m_freq) ==
false)
{
{
throw new Win32Exception();
}
}
}
public void Start()
{
{
Thread.Sleep(0);
QueryPerformanceCounter(out m_startTime);
}
public void Stop()
{
QueryPerformanceCounter(out m_stopTime);
}
public double Duration
{
{
get
{
return (double)(m_stopTime - m_startTime) / (double)m_freq;
}
{
return (double)(m_stopTime - m_startTime) / (double)m_freq;
}
}
}
각 함수는 아래와 같습니다.
BOOL WINAPI QueryPerformanceCounter(
__out LARGE_INTEGER *lpPerformanceCount
);
CPU의
Tick을 받아옵니다. 아마 보통 GetTickCount()를 사용할텐데 위의 함수는 더 정교한 숫자를 얻어올 수 있습니다.
BOOL WINAPI QueryPerformanceFrequency(
__out LARGE_INTEGER *lpFrequency
);
QueryPerformanceCounter 의 초당 진동수(주파수)를
얻어옵니닫.
Duration 값에 1000을 곱하면 ms 가 나오겠죠
.
.
.
.
다 알고있는 이야기였습니다..
ㅠ
댓글
댓글 쓰기