看板 C_Sharp 關於我們 聯絡資訊
我想要對一個迴圈計時 使用stopwatch,流程大致如下 Stopwatch sw = new Stopwatch(); sw.Reset(); sw.Start(); do{ ... }while(...) sw.Stop(); textBox.Text = sw.Elapsed.TotalMilliseconds.ToString(); 每次計時出來的數值都會漂來漂去 像是11.8967,12.3895,11.8128,10.7043,12.2839 (毫秒) 雖然數字區間大致上就落在10~12ms 但能讓他精確到個位數嗎? 像是每次都11.多 或是有其他更準確的計時方法? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.40.92.185 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1496727274.A.B8F.html
YahooTaiwan: 本來就會有誤差 06/06 13:35
ssccg: 每次執行時間本來就不一定一樣吧? 還沒到準不準確的問題 06/06 13:52
anumis: SpinWait.SpinUntil 可以暫停到個位數的微秒 06/06 16:11
anumis: 誤差小於5ms 06/06 16:12
anumis: 我看錯了,別理我 O.Q 06/06 16:12
Litfal: 這是計算工作時間吧,本來就不會每次都一樣,又不是單晶片 06/06 16:33
zel: 丟進個指定核心的執行序跑,google microsecond timer有教學 06/06 19:08
zel: 但還是沒辦法精準觸發事件 06/06 19:09
erspicu: cpu的時脈也是飄來飄去阿 06/07 10:04
commandoEX: 把時間四捨五入到整數再輸出就好了 06/07 17:07
m339606: 給你結論。無解 06/07 18:08
largesperm: windows 非 rtos 06/07 18:17
AWEN221: textBox.Text = "11.多"; 06/09 10:04
AWEN221: 好啦 不開玩笑 就像同一個人每次跑百米時間也不會一樣啦 06/09 10:06