我需要一個真正的時鐘在ansi c提供一個精度高達毫秒?我需要一個真正的時間在ansi c提供一個精度高達毫秒?
我在windows上工作的一個windows base lib也是可以接受thanx的。
我需要一個真正的時鐘在ansi c提供一個精度高達毫秒?我需要一個真正的時間在ansi c提供一個精度高達毫秒?
我在windows上工作的一個windows base lib也是可以接受thanx的。
你不能使用便攜式代碼。
由於您使用的是Windows,因此您需要開始意識到Windows不是實時系統,因此您所做的任何事情都無法保證準確無誤。也就是說,您可以從timeBeginPeriod(1);
開始將多媒體計時器分辨率設置爲1毫秒。然後您可以撥打timeGetTime()
以1毫秒的分辨率檢索當前時間。完成計時後,您可撥打timeEndPeriod(1)
將計時器分辨率恢復爲默認值。
在ANSI C中,您無法確定底層系統在幾毫秒內提供準確性。然而,爲了達到最大的細節,你可以使用clock()
函數返回因爲蜱進程啓動,其中一個刻度的持續時間由CLOCKS_PER_SEC
定義的時間:
#include <time.h>
double elapsed; // in milliseconds
clock_t start, end;
start = clock();
/* do some work */
end = clock();
elapsed = ((double) (end - start) * 1000)/CLOCKS_PER_SEC;
從GNU的documentation。
ANSI C時鐘()會給你精度毫秒,但不是準確度,因爲這取決於窗口的系統時鐘,其準確度爲50毫秒或在該範圍的某處。如果你需要一些更好的東西,那麼你可以使用Windows API QueryPerformanceCounter,它也有其自己的注意事項。
[How to measure time in milliseconds using ANSI C?](http://stackoverflow.com/questions/361363/how-to-measure-time-in-milliseconds-using-ansi-c) – WhirlWind 2010-05-26 15:52:58
不知道如何讓超鏈接在評論中工作,或者我會在這裏提供我的「答案」。 – 2010-05-26 15:56:47
@Michael我投票結束;它會自動完成。 – WhirlWind 2010-05-26 15:57:20