Sleep時間がPCによって変わります – プログラミング – Home

Sleep時間がPCによって変わります
 
通知
すべてクリア

Sleep時間がPCによって変わります


ある
 ある
(@ある)
ゲスト
結合: 22年前
投稿: 11
Topic starter  

お世話になります。VC++で作成したアプリケーションを次の2つのPC
PC1(200MHz、WinNT)、PC2(800MHz、Win2000)で動作させ、その中で実行している0.1[s]のSleep
がどの程度正しく0.1[s]なのかを計ってみました。
するとPC1では、0.10014[s]程度でありますが、PC2では0.004~0.009[s]となります。
クロックの違い、他プロセス状況を考慮しても、誤差範囲と思えませんし、短くなるのも
おかしな気がします。何か要因と思われることがございましたら、ご教示ください。
宜しくお願いいたします。


引用解決済
トピックタグ
とおりすがり
 とおりすがり
(@とおりすがり)
ゲスト
結合: 23年前
投稿: 180
 

時間計測している部分の問題ではないでしょうか?
ソースコードを提示してください。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

Sleepは他のスレッドがあるとそっちに制御がうつっちゃうから
同時起動している他プロセスの影響を受けますよ。


返信引用
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

環境はWin2K,VC6,cpuはP3-750MHzくらいで下記のコードを試しました
1回しかやってないけど結果は100344で
あるさんが書かれているほどの値を連発しているようには思えませんでした
時間を調べる関数の精度もあると思いますが、0.004~0.009[s]というのは変ですね
もう何台かマシンがあるようでしたら、そちらでも試してみたほうが良いかもしれません

DWORD dwA = 0;
int n;
for (n = 0; n < 1000; n++) {
DWORD dw1 = timeGetTime();
Sleep(100);
DWORD dw2 = timeGetTime();
dwA += dw2 - dw1;
}
CString strDisp;
strDisp.Format(%d, dwA);
MessageBox(strDisp);

下記のページが参考になるかもしれません
http://www.ovit.co.jp/old/tech/sleep_win2k.htm


返信引用
ある
 ある
(@ある)
ゲスト
結合: 22年前
投稿: 11
Topic starter  

GetTickCount APIで時間を計測してみたところほぼ0.1[s]の結果を得ました。
実は、Real-Time Extentionを組み込んでまして、そちらのAPIもしくは、ツール
の問題ではないかというところで現在調査中です。そういう事情でソースコード
提示も適当ではないかと考え控えておりました。
Winでのプログラミングの経験がほとんど無いために、もっと基本的な誤りが
ないかと考え、取り急ぎご相談させていただきました。
ご親切にレス頂きました方々、本当にありがとうございます。
結果は、またご報告させていただきたいと思います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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