C/C++での正確なタイミング
プログラムのカウントダウンはプログラマーにとって本当に重要で、windowsの上のあのclock()は本当に正確ではありませんて、精度は10 msだけあって、本当に悲しいです.Windowsの下でC、C++を使って時間を計る関数を研究して、みんなに分かち合います.
主に2つの関数の使用です.まず実行可能なコードを貼り付けて、この2つの関数について話します.
1、LARGE_INTEGERはマイクロソフトのコンパイラの中で実際にはunionであり、その定義は以下の通りである.
使用するコンパイラが64ビット整数をサポートしている場合は、QuadPartを使用して変数の値を参照できます.コンパイラが64ビット整数をサポートしていない場合は、LowPartとHighPartを使用して64ビット整数の低32ビットと高32ビットを参照できます.
2、QueryPerformanceFrequncy(LARGE_INTEGER *freq)
それはあなたの機械が1秒に何回実行するかを得るために使用されます.それはあなたの時計周期です.
3、QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)
CPUが起動してから実行するクロックサイクル数を取得します.
C/C++からの正確なタイミング
主に2つの関数の使用です.まず実行可能なコードを貼り付けて、この2つの関数について話します.
#include <windows.h>
#include <stdio.h>
int main(int argc, char **argv)
{
LARGE_INTEGER freq;
LARGE_INTEGER start_t, stop_t;
double exe_time;
QueryPerformanceFrequency(&freq);
fprintf(stdout, "The frequency of your pc is %d.
", freq.QuadPart);
QueryPerformanceCounter(&start_t);
Sleep(1000);
QueryPerformanceCounter(&stop_t);
exe_time = 1e3*(stop_t.QuadPart-start_t.QuadPart)/freq.QuadPart;
fprintf(stdout, "Your program executed time is %fms.
", exe_time);
getchar();
return 0;
}
1、LARGE_INTEGERはマイクロソフトのコンパイラの中で実際にはunionであり、その定義は以下の通りである.
typedef union _LARGE_INTEGER
{
struct
{
DWORD LowPart;
LONG HighPart;
};
struct
{
DWORD LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;
使用するコンパイラが64ビット整数をサポートしている場合は、QuadPartを使用して変数の値を参照できます.コンパイラが64ビット整数をサポートしていない場合は、LowPartとHighPartを使用して64ビット整数の低32ビットと高32ビットを参照できます.
2、QueryPerformanceFrequncy(LARGE_INTEGER *freq)
それはあなたの機械が1秒に何回実行するかを得るために使用されます.それはあなたの時計周期です.
3、QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)
CPUが起動してから実行するクロックサイクル数を取得します.
C/C++からの正確なタイミング