看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VS2005 作業系統:windows 7 64bit CPU:I7-3770 3.4GHz 問題(Question): 目前想要精準的算出1ms 不過不管是使用QueryPerformanceCount / QueryPerformanceFrequency 或者timeGetTime 最小就算到10ms 而下一個單位數則是20ms並無法測出非10ms倍數的時間像是15ms 程式碼如下 LARGE_INTEGER t1, t2, ts; QueryPerformanceFrequency(&ts); QueryPerformanceCounter(&t1); Sleep(1); QueryPerformanceCounter(&t2); printf("Lasting Time: %lf\n",(t2.QuadPart-t1.QuadPart)/(double)(ts.QuadPart)); 在有些電腦使用這個方法可以算到1ms 不過我的電腦在怎麼試都無法 請問是sleep()這個function的問題嗎? 還是平台的問題? 有什麼方法可以精準算到1ms? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.217.17 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1438680302.A.574.html
azureblaze: Sleep()的精度只有16ms左右 08/04 17:26
azureblaze: 簡單的方式是loop QueryPerformanceCounter() 08/04 17:28
b92299: 請問loop昰什麼意思呢? 08/04 17:51
azureblaze: 既然你知道怎麼計算時間,就查時間查到時間到為止 08/04 18:17
LiloHuang: 請爬文 #1Ku5nCFJ (C_and_CPP) 08/04 21:11
LiloHuang: 另外有 busy loop 版的 usleep https://goo.gl/cGW5pu 08/04 21:21
jaeger8: select在windows下的範例: http://codepad.org/zacDWzwS 08/08 18:07
jaeger8: 不過windows真的很不準,如果要精準可能要移到別的os 08/08 18:08
jaeger8: 修正一下init: http://codepad.org/8bdf7afM 08/08 18:22
Killercat: boost/C++11的chromo有提供比較精準的計數 08/10 12:46