| 
 
매우 정확한 시간차를 구해야 할 때 사용할 수 있는 함수입니다.
 사용의 편의에 초점을 맞춰 함수를 구성했습니다.
 방법은 널리 알려진 QueryPerformanceCounter를 이용한 것입니다..
 
 //---------------------------------------------------------------------------
 // 고정밀도의 정확한 시간차 구하기. 
 //
 // 현재시간과 time 간의 시간차에 해당하는 카운터 값을 돌린다.
 // time == 0이면 현재시간에 해당하는 카운트 값을 넣고 Freq를 세팅하고 시간차를 0을 돌린다.
 // 그러므로 처음에는 time = 0 && freq != NULL로 호출하고,
 // 그 다음에 호출하면 그 간의 시간차에 해당하는 카운터를 돌린다.
 // 즉 리턴되는 시간차를 주파수인 (double)freq로 나누면 실제 시간차가 나온다. 
 
 LONGLONG    GetTimeBetweenNS(LARGE_INTEGER& time, LARGE_INTEGER* freq = NULL)
 {
     LARGE_INTEGER  StartTick, CurrentTick;
 
     if (time.QuadPart == 0)
     {
         QueryPerformanceCounter(&StartTick);
         if (freq != NULL)
             QueryPerformanceFrequency(freq);
         time = StartTick;
         return 0;
     }
     QueryPerformanceCounter(&CurrentTick);
     LONGLONG  between = CurrentTick.QuadPart - time.QuadPart;
     time = CurrentTick;
     return between;
 };
 
 //---------------------------------------------------------------------------
 // Test 예.
 
 LARGE_INTEGER  NSTime, NSFreq;
 
 void __fastcall TForm1::Timer1Timer(TObject *Sender)
 {
     LONGLONG  between = GetTimeBetweenNS(NSTime, &NSFreq);
     Label2->Caption = between;
     Caption = NSFreq.QuadPart;
     double  between2 = (double)between / NSFreq.QuadPart;
     Label3->Caption = FormatFloat("0.0000000000 초", between2);
 }
 //---------------------------------------------------------------------------
 
 
 잘 하면 타이머로도 활용 가능하겠죠.
 
    | 
  
다음과 같은 방법도 많이 쓰입니다.
#include <mmsystem.h>
// CPU 자원 최대 사용하도록 준비.
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
// 시간 측정 준비
timeBeginPeriod(1);
DWORD starttime = timeGetTime();
//
// 어떤 작업
//
DWORD endtime = timeGetTime();
// 시간 측정. ms 단위.
DWORD timebetween = endtime - starttime;
// 종료
timeEndPeriod(1);