bestlong 怕失憶論壇

 

 

搜索
bestlong 怕失憶論壇 論壇 Delphi Delphi 高精度計時方法
查看: 4736|回復: 0
go

Delphi 高精度計時方法 [複製鏈接]

Rank: 9Rank: 9Rank: 9

1#
發表於 2006-8-4 10:28 |只看該作者 |倒序瀏覽 |打印
  1. //取毫秒級時間精度(方法一):
  2. var
  3.   t1, t2: int64;
  4.   r1: int64;
  5. begin
  6.   t1 := GetTickCount; //獲取開始計數 WINDOWS API
  7.   Sleep(1000); {do...} //執行要計時的代碼
  8.   t2 := GetTickCount; //獲取结束計數值
  9.   r1 := t2 - t1; //取得計時時間,單位毫秒(ms)
  10.   ShowMessage(inttostr(r1));
  11. end;

  12. //取毫秒級時間精度(方法二):
  13. //use DateUtils; //引用DateUtils單位
  14. var
  15.   t1, t2: TDatetime;
  16.   r1: int64;
  17. begin
  18.   t1 := now(); //獲取開始計時時間
  19.   Sleep(1000); {do...}//執行要計時的代碼
  20.   t2 := now();//獲取结束計時時間
  21.   r1 := SecondsBetween(t2, t1); //取得計時時間,單位秒(s)
  22.   r1 := MilliSecondsBetween(t2, t1); //取得計時時間,單位毫秒(ms)
  23.   ShowMessage(inttostr(r1));
  24. end;

  25. //注:以上兩種方式經本人测試好像只能產生0.01秒的計時精度

  26. //取系统級時間精度:
  27. var
  28.   c1:int64;
  29.   t1,t2:int64;
  30.   r1:double;
  31. begin
  32.   QueryPerformanceFrequency(c1); //WINDOWS API 返回計數频率(Intel86:1193180)(獲得系统的高性能頻率計數器在一毫秒内的震動次數)
  33.   QueryPerformanceCounter(t1); //WINDOWS API 獲取開始計數值
  34.   Sleep(1000); {do...}//執行要計時的代碼
  35.   QueryPerformanceCounter(t2); //獲取结束計數值
  36.   r1 := (t2 - t1) / c1; //取得計時時間,單位秒(s)
  37.   r1 := (t2 - t1) / c1 * 1000; //取得計時時間,單位毫秒(ms)
  38.   r1 := (t2 - t1) / c1 * 1000000; //取得計時時間,單位微秒
  39.   ShowMessage(FloatToStr(r1));
  40. end;
複製代碼
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw
‹ 上一主題|下一主題

Archiver|怕失憶論壇

GMT+8, 2024-5-5 14:34 , Processed in 0.010749 second(s), 10 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.