推 james732: 精準指的是誤差範圍要到多少呢? 06/14 18:29
→ james732: Windows環境似乎做不到絕對的精準? 06/14 18:29
→ Schottky: QueryPerformanceFrequency() 寫錯了 06/14 18:33
→ Caesar08: 你可以用chrono的high_resolution_clock 06/14 19:00
→ Caesar08: VC++的實作方式也是用QueryPerformanceFrequency 06/14 19:01
→ eleghost: 謝謝回復, 精準到ms等級即可. 06/14 19:16
→ Schottky: QueryPerformanceCounter() 準確到 us 級並沒有問題 06/14 19:34
→ Schottky: 所以你遇到什麼樣的麻煩? 06/14 19:34
→ EdisonX: 我想問 QueryPerformanceCounter 確定可準到 us ?? 06/14 22:46
→ Schottky: 看 CPU 而定,Sandy bridge 以後的 CPU 可以到 ns 以下 06/14 23:27
→ Schottky: 但光是執行 QueryPerformanceCounter() 就要兩百多 ns 06/14 23:27
→ Schottky: 它就是直接去執行 CPU 的 RDTSC (RDTSCP) 指令而已 06/14 23:28
→ freaky: 問題在於1ms的sleep要幹嘛? 06/15 00:56
推 EdisonX: 好吧, 那應該是我之前有誤會些什麼了, 之前對 Windows 的 06/15 03:05
→ EdisonX: 印象就是要 sleep 或 timer ,精度上限都在數十 ms 級。 06/15 03:05
→ Schottky: 也只有 performance counter 系列有 ns 級的準確度而已 06/15 03:27
→ Schottky: 其他就如你所說是 multimedia timer 的 ms 級 06/15 03:28
→ Schottky: 而且 performance counter 沒有對應的 sleep 和 alarm 06/15 03:30
→ Schottky: 所以原 PO 這樣做 busy waiting 實在也是逼不得已 06/15 03:31
推 EdisonX: 若在裡面放sleep(0)就可避開,只是準度應該又會降。 06/15 19:35
推 licheer: realtime os 06/16 00:26
→ freaky: QueryPerformanceCounter()是用來做高精度timestamp用的 06/16 01:23
→ freaky: Windows的thread time slice一般就是10或15ms 06/16 01:25
→ freaky: 所以幾ms的sleep()無意義 06/16 01:26