[問題] 計時不準確

看板C_Sharp (C#)作者時間8年前 (2017/06/06 13:34), 編輯推噓5(509)
留言14則, 10人參與, 最新討論串1/1
我想要對一個迴圈計時 使用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

06/06 13:35, , 1F
本來就會有誤差
06/06 13:35, 1F

06/06 13:52, , 2F
每次執行時間本來就不一定一樣吧? 還沒到準不準確的問題
06/06 13:52, 2F

06/06 16:11, , 3F
SpinWait.SpinUntil 可以暫停到個位數的微秒
06/06 16:11, 3F

06/06 16:12, , 4F
誤差小於5ms
06/06 16:12, 4F

06/06 16:12, , 5F
我看錯了,別理我 O.Q
06/06 16:12, 5F

06/06 16:33, , 6F
這是計算工作時間吧,本來就不會每次都一樣,又不是單晶片
06/06 16:33, 6F

06/06 19:08, , 7F
丟進個指定核心的執行序跑,google microsecond timer有教學
06/06 19:08, 7F

06/06 19:09, , 8F
但還是沒辦法精準觸發事件
06/06 19:09, 8F

06/07 10:04, , 9F
cpu的時脈也是飄來飄去阿
06/07 10:04, 9F

06/07 17:07, , 10F
把時間四捨五入到整數再輸出就好了
06/07 17:07, 10F

06/07 18:08, , 11F
給你結論。無解
06/07 18:08, 11F

06/07 18:17, , 12F
windows 非 rtos
06/07 18:17, 12F

06/09 10:04, , 13F
textBox.Text = "11.多";
06/09 10:04, 13F

06/09 10:06, , 14F
好啦 不開玩笑 就像同一個人每次跑百米時間也不會一樣啦
06/09 10:06, 14F
文章代碼(AID): #1PDZxgkF (C_Sharp)
文章代碼(AID): #1PDZxgkF (C_Sharp)