[問題] 程式執行時間

看板Programming作者 (阿緯)時間15年前 (2010/09/03 05:03), 編輯推噓5(5027)
留言32則, 7人參與, 最新討論串1/1
最近寫一支演算法~要來計算他的執行時間 可是發現例如跑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

09/03 05:21, , 1F
時間精準度的必要性? real-time system?
09/03 05:21, 1F

09/03 05:23, , 2F
50ms 的誤差, 嚴重與否, 要看你應用的領
09/03 05:23, 2F

09/03 05:23, , 3F
域, 這沒講出來, 只能憑個人感覺來判斷
09/03 05:23, 3F

09/03 05:24, , 4F
時間誤差的嚴重性了
09/03 05:24, 4F

09/03 05:54, , 5F
另外,計算時間的方式也是有優劣好壞之別
09/03 05:54, 5F

09/03 09:31, , 6F
通常都是算Big-O吧
09/03 09:31, 6F

09/03 09:42, , 7F
對啊,會被時脈和程序切換影響.所以很難做.
09/03 09:42, 7F

09/03 09:43, , 8F
你可以用windows內建的perf程式檢視每次執行
09/03 09:43, 8F

09/03 09:44, , 9F
資訊.至於程式評估就看怎麼把數據統計處理了
09/03 09:44, 9F

09/03 10:06, , 10F
學術偏理論都會附上Big-O, 學術偏應用會
09/03 10:06, 10F

09/03 10:06, , 11F
說明使用系統、環境與執行時間
09/03 10:06, 11F

09/03 10:07, , 12F
業界不清楚, 但應該類似後者
09/03 10:07, 12F

09/03 17:12, , 13F
看不懂那個 1 1 1 2 1 1 3 是怎樣…
09/03 17:12, 13F

09/03 17:13, , 14F
整個演算法執行只要1ms?那誤差也太大
09/03 17:13, 14F

09/03 17:13, , 15F
這樣計算有什麼意義…
09/03 17:13, 15F

09/03 19:51, , 16F
給樓上, 誤差的原因: 1. 原程式本身
09/03 19:51, 16F

09/03 19:52, , 17F
2. 計時的寫法 3. 時間的計量單位
09/03 19:52, 17F

09/03 21:58, , 18F
有一個方法 可以測精準時間
09/03 21:58, 18F

09/03 21:59, , 19F
寫一個迴圈 讓他跑n次 總時間再除以n
09/03 21:59, 19F

09/04 00:57, , 20F
樓上的也是一個方法, 運用統計概念去求
09/04 00:57, 20F

09/04 08:01, , 21F
不是,Big-O只是與統計數字相同的一個總和數,
09/04 08:01, 21F

09/04 08:02, , 22F
而Big-O不是實際計算而迴歸來的.
09/04 08:02, 22F

09/04 08:03, , 23F
實測時就是跑不同次數的多次,n1,n2,...nk,
09/04 08:03, 23F

09/04 08:04, , 24F
在二維圖上打點,然後看要求平均會是迴歸..
09/04 08:04, 24F

09/04 16:45, , 25F
給e先生:你講的跟他 1 1 1 2 1 1 3 有
09/04 16:45, 25F

09/04 16:45, , 26F
什麼關係?我看不懂他寫啥 別扯別的
09/04 16:45, 26F

09/05 13:02, , 27F
另一個辦法就是呼叫解析度更高的時間函數
09/05 13:02, 27F

09/05 13:02, , 28F
你要計算ms,就用計算us的函數去計算
09/05 13:02, 28F

09/05 13:03, , 29F
(解析度?用解析度好像不太對...)
09/05 13:03, 29F

09/05 13:04, , 30F
我之前有爬過類似的文,連結忘記放哪了
09/05 13:04, 30F

09/05 21:42, , 31F
我想costbook想說的是精準度
09/05 21:42, 31F

09/08 10:01, , 32F
執行時間會有1~3倍的差異喔?還是測量問題?
09/08 10:01, 32F
文章代碼(AID): #1CW14XMR (Programming)
文章代碼(AID): #1CW14XMR (Programming)