Delphi高精度計時方法

2021-04-08 14:37:07 字數 1160 閱讀 4280

//取毫秒級時間精度(方法一):

vart1,t2:int64;

r1:int64;

begin

t1:=gettickcount;//獲取開始計數 windows api

sleep(1000);//執行要計時的**

t2:=gettickcount;//獲取結束計數值

r1:=t2-t1;//取得計時時間,單位毫秒(ms)

showmessage(inttostr(r1));

end;

//取毫秒級時間精度(方法二):

//use dateutils;//引用dateutils單位

vart1,t2:tdatetime;

r1:int64;

begin

t1:=now();//獲取開始計時時間

sleep(1000);//執行要計時的**

t2:=now();//獲取結束計時時間

r1:=secondsbetween(t2,t1);//取得計時時間,單位秒(s)

r1:=millisecondsbetween(t2,t1);//取得計時時間,單位毫秒(ms)

showmessage(inttostr(r1));

end;

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

//取系統級時間精度:

varc1:int64;

t1,t2:int64;

r1:double;

begin

queryperformancefrequency(c1);//windows api 返回計數頻率(intel86:1193180)(獲得系統的高效能頻率計數器在一毫秒內的震動次數)

queryperformancecounter(t1);//windows api 獲取開始計數值

sleep(1000);//執行要計時的**

queryperformancecounter(t2);//獲取結束計數值

r1:=(t2-t1)/c1;//取得計時時間,單位秒(s)

r1:=(t2-t1)/c1*1000;//取得計時時間,單位毫秒(ms)

r1:=(t2-t1)/c1*1000000;//取得計時時間,單位微秒

showmessage(floattostr(r1));

end; 

高精度除法(高精度除以高精度)

先貼一個簡單的高精度除以單精度的 include include include using namespace std int main else ys ys 10 a i 0 while c i 0 i for int j i j 0 j printf d c j if ys printf d ...

高精度除高精度

演算法流程 第一步,讀入被除數 a 和 除數 b,判斷是否 a b,是則輸出 0 並結束演算法,否則令 answer 0 第二步,令餘數 remainder 0,令 i 從被除數最高位的下標開始 第三步,令 remainder remainder 10 a i 令 c 9 第四步,判斷是否 b c ...

高精度除以高精度

原 題 高精除以高精,求它們的商和餘數。演算法分析 高精除以高精是用減法模擬除法,對被除數的每一位都減去除數,一直減到當前位置的數字 包括前面的餘數 小於除數 由於每一位的數字小於10,所以對於每一位最多進行10次計算 代 碼 include include include using namesp...

高精度乘高精度

c a b a b均是高精度數 比如a 156,b 3,求a b 很容易知道答案是468,怎樣算的呢?首先讓3 6 18,然後向進一位,並且這位只保留8 讓3 5 進位1 16,然後向前進一位,並且這位只保留6 讓3 1 進位1 4,此時不向前進位,保留4 所以最終答案是468 通過這個例子我們再來...

高精度乘高精度

思路 用vector表示大整數,整數的低位存在陣列索引的低位 a x b c其中c的每一位 如第3位 是由a和b的相應位相乘累加,處理後得到 如 1 2,2 1 include using namespace std const int demical 10 void input string s,...