DELPHI 고정밀 타이밍 방법(밀리초 단위)

1126 단어 delphi
//밀리초 단위 시간 정밀도 (방법 1):
var
  t1,t2:int64;
  r1:int64;
  begin
  t1:=GetTickCount;//       WINDOWS API
  sleep(1000);{do...}//        
  t2:=GetTickCount;//       
  r1:=t2-t1;//      ,    (ms)
  showmessage(inttostr(r1));
  end;

//밀리초 단위의 시간 정밀도를 취한다(방법2):
//use DateUtils;//  DateUtils  
  var
  t1,t2:tdatetime;
  r1:int64;
  begin
  t1:=now();//        
  sleep(1000);{do...}//        
  t2:=now();//        
  r1:=SecondsBetween(t2,t1);//      ,   (s)
  r1:=MilliSecondsBetween(t2,t1);//      ,    (ms)
  showmessage(inttostr(r1));
  end;

//주: 상기 두 가지 방식은 본인의 테스트를 통해 0.01초의 시간 정밀도만 발생할 수 있는 것 같다
//시스템 수준 시간 정밀도:
  var
  c1:int64;
  t1,t2:int64;
  r1:double;
  begin
  QueryPerformanceFrequency(c1);//WINDOWS API       (Intel86:1193180)(                       )
  QueryPerformanceCounter(t1);//WINDOWS API        
  sleep(1000);{do...}//        
  QueryPerformanceCounter(t2);//       
  r1:=(t2-t1)/c1;//      ,   (s)
  r1:=(t2-t1)/c1*1000;//      ,    (ms)
  r1:=(t2-t1)/c1*1000000;//      ,    
  showmessage(floattostr(r1));
  end;

좋은 웹페이지 즐겨찾기