作者b92299 (vincent)
看板C_and_CPP
標題[問題] Sleep()delay時間問題
時間Tue Aug 4 17:24:59 2015
開發平台(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
→ jaeger8: 不過windows真的很不準,如果要精準可能要移到別的os 08/08 18:08
推 Killercat: boost/C++11的chromo有提供比較精準的計數 08/10 12:46