SetTimerの精度について – プログラミング – Home

通知
すべてクリア

SetTimerの精度について


ちる
 ちる
(@ちる)
ゲスト
結合: 23年前
投稿: 77
Topic starter  

いつもお世話になっております。
CWnd::SetTimerの精度についてこのような話を聞きました。

①SetTimer(500)と設定すると500msでメッセージが入るが
Windowsの仕様上、正確に500msで処理が開始できるわけではない。
必ず500ms以上でメッセージが入ってくる。(以下は当然在り得ない)

//ここまでは納得できます。

②かといって1回目メッセージの処理開始が510msだったとして10msずれているのだが
次のメッセージが1010ms以降で起こるというわけではない。
ズレは最後のメッセージで発生するもののみで後は常に補正されている。
要はメッセージが起こるタイミングはタイマーを生成した時刻(ウインドウズタイマ
ー)
から500ms後,1000ms後,1500ms後と約束されている。
前のメッセージが起こってから500ms後という訳ではない。
(この場合は510のメッセージ処理が開始されてから490ms後にイベントが起きる
予定、つまり全体から見て1秒時点。ただしそこでもまたずれる。)

これって常識なんでしょうか?
MSDN等でも調べてみたのですが該当する文が無かったので
もしご存知の方がいましたら教えてください。
よろしくお願い致します。


引用解決済
トピックタグ
ちる
 ちる
(@ちる)
ゲスト
結合: 23年前
投稿: 77
Topic starter  

失礼しました。
開発環境は次の通りです。
WINDOWS-XP/VC++6.0-SP5/MFC使用です。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

なぜやってみないのですか?


返信引用
ちる
 ちる
(@ちる)
ゲスト
結合: 23年前
投稿: 77
Topic starter  

試そうとも思ったのですが
タイマーがいくつ狂ったかというものを測定する方法が
ストップウォッチぐらいしか思い浮かばず正確な測定が難しいと判断したことと
タイマーが一定して狂う処理をどのように入れれば良いのかが
容易に思い浮かばなかったことから質問させていただきました。

>επιστημηさん
どのように試すのが宜しいのでしょうか。
もし宜しければご助言いただければと思います。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

イベント発生の瞬間に若干の狂いはあるが、
'それが積み重なることはない'かどうかを確認したいんですよね?

たとえば 100[ms]でSetTimerかけます。(と同時にGetTickcount)
タイムアウトが1000回起こったときにもういちどGetTickCountし、
前回との差を取ります。その結果がおおよそ100秒なら安心できるのでは。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました