作者judo1127 (阿緯)
看板Programming
標題[問題] 程式執行時間
時間Fri Sep 3 05:03:25 2010
最近寫一支演算法~要來計算他的執行時間
可是發現例如跑10次會有4~5次 執行時間是在一個常數的數值
然後大約3~4次會時間大約偏高 1.2次偏低 (而且執行時間都會一樣)
"舉例"數據會長這樣 1 1 1 2 1 1 3 1 2 3 單位:毫秒
計算執行時間是抓CPU的clock來計算!!
使用VS C++ 有這個涵式可以用
問題來了~我想問說有時偏高的數據中最高跟最低會差到50毫秒左右
在執行的時候也都關掉不必要的應用程式
是否OS本身一些作業的關係 它的優先權比使用者的應用程式高
所以導致先中斷去執行 再回來去做我的運算??
PS每次跑10次都有發現這樣的問題
不是連續跑10次而是分開來執行 執行完一次在執行下一次(這裡因為避免存到cache)
演算法只是做一些運算 沒有寫到IO的部分@@
不知道有沒有人遇過這樣的問題>"<
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.251.196.4
1F:→ ericinttu:時間精準度的必要性? real-time system? 59.117.114.83 09/03 05:21
2F:→ ericinttu:50ms 的誤差, 嚴重與否, 要看你應用的領 59.117.114.83 09/03 05:23
3F:→ ericinttu:域, 這沒講出來, 只能憑個人感覺來判斷 59.117.114.83 09/03 05:23
4F:→ ericinttu:時間誤差的嚴重性了 59.117.114.83 09/03 05:24
5F:→ ericinttu:另外,計算時間的方式也是有優劣好壞之別 59.117.114.83 09/03 05:54
6F:推 costbook:通常都是算Big-O吧 120.124.134.62 09/03 09:31
7F:推 yauhh:對啊,會被時脈和程序切換影響.所以很難做. 211.21.94.199 09/03 09:42
8F:→ yauhh:你可以用windows內建的perf程式檢視每次執行 211.21.94.199 09/03 09:43
9F:→ yauhh:資訊.至於程式評估就看怎麼把數據統計處理了 211.21.94.199 09/03 09:44
10F:→ ericinttu:學術偏理論都會附上Big-O, 學術偏應用會 59.117.114.83 09/03 10:06
11F:→ ericinttu:說明使用系統、環境與執行時間 59.117.114.83 09/03 10:06
12F:→ ericinttu:業界不清楚, 但應該類似後者 59.117.114.83 09/03 10:07
13F:→ MOONRAKER:看不懂那個 1 1 1 2 1 1 3 是怎樣… 59.120.168.228 09/03 17:12
14F:→ MOONRAKER:整個演算法執行只要1ms?那誤差也太大 59.120.168.228 09/03 17:13
15F:→ MOONRAKER:這樣計算有什麼意義… 59.120.168.228 09/03 17:13
16F:推 ericinttu:給樓上, 誤差的原因: 1. 原程式本身 59.117.114.83 09/03 19:51
17F:→ ericinttu:2. 計時的寫法 3. 時間的計量單位 59.117.114.83 09/03 19:52
18F:→ utomaya:有一個方法 可以測精準時間 58.115.143.178 09/03 21:58
19F:→ utomaya:寫一個迴圈 讓他跑n次 總時間再除以n 58.115.143.178 09/03 21:59
20F:→ ericinttu:樓上的也是一個方法, 運用統計概念去求 59.117.124.120 09/04 00:57
21F:→ yauhh:不是,Big-O只是與統計數字相同的一個總和數,218.160.210.166 09/04 08:01
22F:→ yauhh:而Big-O不是實際計算而迴歸來的.218.160.210.166 09/04 08:02
23F:→ yauhh:實測時就是跑不同次數的多次,n1,n2,...nk,218.160.210.166 09/04 08:03
24F:→ yauhh:在二維圖上打點,然後看要求平均會是迴歸..218.160.210.166 09/04 08:04
25F:→ MOONRAKER:給e先生:你講的跟他 1 1 1 2 1 1 3 有 59.120.168.228 09/04 16:45
26F:→ MOONRAKER:什麼關係?我看不懂他寫啥 別扯別的 59.120.168.228 09/04 16:45
27F:推 costbook:另一個辦法就是呼叫解析度更高的時間函數 120.124.134.62 09/05 13:02
28F:→ costbook:你要計算ms,就用計算us的函數去計算 120.124.134.62 09/05 13:02
29F:→ costbook:(解析度?用解析度好像不太對...) 120.124.134.62 09/05 13:03
30F:→ costbook:我之前有爬過類似的文,連結忘記放哪了 120.124.134.62 09/05 13:04
31F:→ sunneo:我想costbook想說的是精準度 140.127.114.41 09/05 21:42
32F:推 meto000:執行時間會有1~3倍的差異喔?還是測量問題?210.241.123.132 09/08 10:01