線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2773
推到 Plurk!
推到 Facebook!

有關執行時間.........

答題得分者是:領航天使
天外來客
初階會員


發表:22
回覆:199
積分:44
註冊:2001-11-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-03-18 03:28:51 IP:61.217.xxx.xxx 未訂閱
小弟是個新手...
想請問一下~~ 以寫程式來說.. 達成目的的寫法有很多
但要怎麼知道 那個方法是最快的呢?? 有什麼工具 可以測試嗎??
編輯記錄
Coffee 重新編輯於 2009-05-03 23:33:43, 註解 無‧
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-03-18 13:27:05 IP:192.168.xxx.xxx 未訂閱
引言: 小弟是個新手... 想請問一下~~ 以寫程式來說.. 達成目的的寫法有很多 但要怎麼知道 那個方法是最快的呢?? 有什麼工具 可以測試嗎??
演算法學裡面有可以計算程式Computing Time的科學方法, 可以從不同的原始程式中計算出所花費的時間, 但那是就理論上的方法優略計算之, 實際情況得視運算中Ram的大小,所需硬碟存取資源頻率,與CPU快慢等因素, 我不知道有何工具可以用,我都是在程式前後加上時間測量, 然後慢慢改進寫法,得到較好的演算法! 再來就是資料庫應用程式,在CPU演算上所花得時間不多, 反而對資料處理的方式影響程式效能更大, 例如:採用Database Server運算較快的SQL指令,BDE連接資料庫的處理技術, 降低Database Server傳回的資料量大小等,這才是值得程式設計師多花時間研究的! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
蜻蜓草
一般會員


發表:22
回覆:30
積分:10
註冊:2002-03-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-03-18 16:40:48 IP:61.217.xxx.xxx 未訂閱
嗯~~是這樣沒錯 ------排除演算法的因素後---- 小弟主要是怕在迴圈中用到了比較耗時的指令or作法, 數量要是乘起來, 實在是相當恐怖 不知 Admin 兄的測量是量 "時間" 還是有辦法量 "clock" 呢? 不知是否願意分享呢?
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-03-18 17:17:59 IP:192.168.xxx.xxx 未訂閱
引言: 嗯~~是這樣沒錯 ------排除演算法的因素後---- 小弟主要是怕在迴圈中用到了比較耗時的指令or作法, 數量要是乘起來, 實在是相當恐怖 不知 Admin 兄的測量是量 "時間" 還是有辦法量 "clock" 呢? 不知是否願意分享呢?
只是簡單的在程式前後加入,沒有什麼技巧,無法測clock
var t1,t2,t3:tdatetime;
    i,j:integer;
begin
   t1:=now;
   j:=1;
   for i:=1 to 100 do
   begin
      //...
   end;
   t2:=now;
   t3:=(t2-t1)*24.0*60.0*60.0;
   caption:=format('%.10f',[t3]);
end;
以前用Trubo C時,Turbo C可以將C轉為ASM,再一個一個Assembly指令去算 Clock,看一種算法快,通常盡量不要用到Mul/Div類的指令,而用Shl/Shr... 但Delphi好像無法轉成Asm ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
蜻蜓草
一般會員


發表:22
回覆:30
積分:10
註冊:2002-03-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-03-19 00:39:33 IP:61.217.xxx.xxx 未訂閱
嗯~~ 了解了 ^_^ 謝謝 Admin 兄幫忙~~ 臨時要寫程式 還真是頭疼 呵
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-03-19 22:47:25 IP:192.168.xxx.xxx 未訂閱
站長轉貼會員buliang發表的文章 嗨 Admin You received the following message from : buliang (buliang@ms12.hinet.net) 其實在Windows的系統下,讀取系統花費的時間 最安全的方式應該是透過 API 的方式: var sTime,eTime:LongInt;//Niro Second i:integer; begin sTime:=timegettime; for i:=1 to 1000000 do ; eTime:=timegettime; Showmessage('起始時間:' inttostr(stime) #13 '完成時間:' inttostr(etime) #13 '花費時間:' inttostr(etime-stime)); end; ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-05-03 21:04:38 IP:59.104.xxx.xxx 訂閱
供參考


[code delphi]
var
StartTime, EndTime : integer;
Begin
StartTime:=GetTickCount;
// ...
EndTime:=GetTickCount;
Edit1.Text := floattostr((EndTime-StartTime)/1000.0) ' sec';
end;

[/code]

------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
系統時間:2024-11-22 21:47:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!