コードを書くことは、いくつかの記事を読んだ後、解決策を見つけるために、統計的アルゴリズムの時間を必要とする場合、参照はここ2つの記事の統合については主に、元のリンクは下記に掲載されています。
参考文献:
1 https://www.cnblogs.com/whiteyun/archive/2009/09/17/1568240.html
2、https://blog.csdn.net/nowayings/article/details/44812201
主に使用LARGE_INTEGER型とQueryPerformanceFrequency()関数
LARGE_INTEGER
LARGE_INTEGER組合構造は、構造を有する、64ビット符号付き整数値を表すために使用することができます。
typedefの組合_LARGE_INTEGER {
構造体{
ULONG LowPart。
LONG HighPart;
} DUMMYSTRUCTNAME。
構造体{
ULONG LowPart。
LONG HighPart;
} U。
LONGLONG QuadPart;
} LARGE_INTEGER。
LARGE_INTEGERはコンソーシアムです。デザインは非常に賢いです。三つの要素のコンソーシアムは、三LARGE_INTEGERを定義すると考えることができます
(1)DUMMYSTRUCTNAMEは二つの部分から構成されています。これは、下位32ビット整数LowPartあります。もう一つは、少し高いの整数です。小端部の場合。デジタルフロントの下位32ビット。32ビットの高ました。
64ビット整数を書き込みにそう100が割り当てられている場合
値はLARGE_INTEGER;
value.LowPart = 100;
value.HighPart = 0;
(2)Uは二つの部分から構成されています。これは、下位32ビット整数LowPartあります。もう一つは、少し高いの整数です。大端部の場合。高い32ビットのデジタルフロント。32ローの後。
64ビット整数を書き込みにそう100が割り当てられている場合
値LARGE_INTEGER;
value.u.LowPart = 100;
value.u.HighPart = 0;
(3)場合LARGE_INTEGER LONGLONG相当。64ビット整数を書き込みにそう100が割り当てられている場合
LARGE_INTEGER値。
value.QuadPart = 100;
あなたはコンパイラを持っている場合は、直接64ビット整数をサポートしていQuadPart(64ビット)に直接、またはそれぞれLowPart(32ビット)およびHighPart(32ビット)アクセスを使用することができ、最高レベルHighPartは符号ビットです。
数の範囲を表す: - 3689348814741910324 4611686018427387903に
メモリ内のレイアウトのような値4000000000 LARGE_INTEGER:
00 28 6B 00 00 00 00 EE
(ローバイト)(上位バイト)
QueryPerformanceFrequency() - 基本
タイプ:Win32APIの
原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER * lpFrequency)。
処置:リターン周波数精度のハードウェアサポートカウンター。
戻り値:ゼロ、精密ハードウェア・サポート・カウンタと、ゼロは、ハードウェアが故障を読んでサポートしていません。
QueryPerformanceFrequency() -高精度タイマWIN9Xために使用される技術的特徴:QueryPerformanceFrequency()とQueryPerformanceCounterの()、高精度のタイマーをサポートするためには、コンピュータハードウェアから必要とされます。
関数のプロトタイプは次のとおりです。
BOOL QueryPerformanceFrequency(lpFrequency LARGE_INTEGER *);
BOOL QueryPerformanceCounterの(lpCount LARGE_INTEGER *)。
いずれかの8バイト整数としてLARGEINTEGERデータタイプ、コンパイラがあってもよい、64ビットの特定の使用をサポートする2つの4バイト整数ジョイント構造として使用することができます。次のように型が定義される:
LARGE_INTEGERユニオン_ typeef
{
構造体
{
DWORD LowPart;
LONG HighPart;
};
LONGLONG QuadPart;
} LARGE_INTEGER。
タイミングの前に内部タイマのマシンクロック周波数を得るために、QueryPerformanceFrequency()関数を呼び出す必要があります。その後、それぞれのイベントが発生する前に厳密なタイミングの必要性、およびQueryPerformanceCounterの呼び出し()の後、数と二回取得したクロック周波数との差を使用して、我々は、イベントの正確な時間を経験した計算することができます。試験機能SLEEP(100)メソッドの正確な持続時間:
LARGE_INTEGER LiTMP;
LONGLONG QT1、QT2、
ダブルDFT、DFF、DFM、
QueryPerformanceFrequency(&LiTMP); //周波数クロック得る
DFF =(ダブル)litmp.QuadPartと、
QueryPerformanceCounterの(&LiTMP) ; //初期値取得
スリープ(100); QT1 = litmp.QuadPart
QueryPerformanceCounterの(&LiTMPを); //終了値取得
QT2 = litmp.QuadPartを、
DFM =(ダブル)(QT2-QT1);
DFT = DFM / DFF。 //値に対応する時間を取得します
秒単位DFT計算の結果ということに注意してください。