時間測定のコード

time.png

時間で光を切り替える
プロファイラ
ゲームのように60fpsなら16.66666666666667msec以内に描画を終えなければならない。
結果が瞬時に表示されるように見せるには、100msecつまり、10fpsが目安。
条件によっては途中でreturnする関数はどうやってプロファイリングしようか。。

関数名 分解能 ヘッダ
GetTickCount 1msec1
timeGetTime 1msec2 #include <mmsystem.h>
QueryPerformanceCounter 0.001msec3
DirectMusicのマスタークロック 100nsec

精度の良いタイマほど、時刻の取得に時間がかかる。
60FPSを保つ目的で使用するなら1msecの分解能で十分

LARGE_INTEGER  before;
LARGE_INTEGER  after;
LARGE_INTEGER  freq;
 
QueryPerformanceCounter(&before);
    Method();//測定したい処理内容
    QueryPerformanceCounter(&after);
    QueryPerformanceFrequency(&freq);
    DWORD time = (DWORD)((after.QuadPart - before.QuadPart) * 1000 / freq.QuadPart);
    printf("処理にかかった時間[%d]頂点%dミリセカンド\n",POINTNUM-BEGIN,time);

DWORDunsigned longでもいい
*timeGetTimeの場合*
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib,"WinMM.Lib")
unsigned long system_time_first= timeGetTime();
//測定したい処理
unsigned long system_time_second= timeGetTime();
m_FirstPeriodSum+=system_time_second-system_time_first;
//測定したい処理
unsigned long system_time_third= timeGetTime();
m_SecondPeriodSum+=system_time_third-system_time_second;

時間でアニメーションするコード

static const unsigned int start_time = GetTickCount();
float theta = float((GetTickCount() - start_time)) / float(0x3FFF);

cplus cuda java winapi

サポートサイト Wikidot.com cpluscudajavawinapi