frostar@wiki

メニュー

作ったもの

過去の遺物
TRPG
プログラム
リンク

自分関係

ここのページへのリンクについてはこちら
TRPGのセッション記録とかメインのブログ
生配信チャンネル。プログラム<雑談
気が向いたときにやります
個人的な質問に答えてます。

TRPG系

お世話になっているオンラインセッションサイト
TRPGのことならここ!
IRCサーバなど、お世話になってます。
ネクロニカの支援サイトです。ツール開発やオンセもやっています。

プログラム系

初心者のためのプログラムのページ。WindowsSDKの方についても詳しく書いています。
windowsSDKのテクニックがいろいろ書いてあります。
C++STL(標準テンプレートライブラリ)の日本語版リファレンスです。


更新履歴

取得中です。


時間計測


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

時間を取得する関数はいくつかありますが、分解能(精度)などの問題を考えるとtimeGetTime関数を使うのがよいようなので、ここではtimeGetTime関数を用いた時間計測について書きます。
コードは以下のようになります。
timeBeginPeriod(1);
DWORD te,ts;
ts = timeGetTime();
TransparentBlt(hdc2,0,0,bmp1.bmWidth/2,bmp1.bmHeight
te = timeGetTime();
timeEndPeriod(1);
printf("処理時間:%d(ms)\n",te-ts);
timeGetTime関数はシステム時刻をミリ秒で返してくれます(DWORD timeGetTime(void))。
処理終了後のシステム時刻から処理開始前のシステム時刻を引くことで処理時間を計測できます。
通常、タイマの分解能は5ms~10msに設定されており、それより細かい時刻を取得することはできないので、より細かく時間を調べるためにtimeBeginPeriod(1);を呼んでいます。
timeBeginPeriod関数はタイマの分解能を設定する関数です(MMRESULT timeBeginPeriod(int))。
引数には設定するタイマの分解能(ms単位)を渡すので、この場合はタイマの分解能を1msに設定しているということになります。
タイマはほかのアプリケーションでも使用しているため、変更した分解能はtimeEndPeriod関数で元に戻します(MMRESULT timeEndPeriod(int))。
引数はtimeBeginPeriodで設定したのと同じ数を渡します。