2011-01-31 7 views
1

clock()メソッドを使用して単純なタイマーを作成しようとしています。アプリケーションが実行されると、CPU使用率が0%から25%にジャンプします。数秒で60から0までカウントするだけの単純なプログラムでは、少し余計です。このためhttp://www.cplusplus.com/reference/clibrary/ctime/clock/"clock()"でCPU使用量が過剰になるのはなぜですか?

どれ理由:

私はこの次のようでしたか?私が使うことのできる選択肢はありますか?

答えて

3

を参照してください:あなたが参照

http://msdn.microsoft.com/en-us/library/ms686298%28v=vs.85%29.aspx

コード:合格するための時間を待っている間に

while (clock() < endwait) {} 

は明らかにちょうどしたがって、CPUをかむます25%の使用率(1つのコア)。

while (clock() < endwait) { Sleep(1);} 

は、問題を解決するはずです。

+0

返信いただきありがとうございます。 'sleep()'の別のスレッドを作成する必要がありますか?私は同時にタイマーを実行する必要があるので。 – DeadCapacitor

+1

上記の編集を参照してください。明らかにもっと精巧な解決策がより精巧な問題に当てはまるかもしれませんが、タイマーや時計を管理するためだけに新しいスレッドは必要ないはずです。 – Keith

+0

ありがとう、キース。それがそれを解決しました。 – DeadCapacitor

1

あなたの問題は、clockの機能ではなく、waitの機能であると思われます。

一定の時間が経過するまでループします。 sleep関数のように、プログラムを実際に中断する関数を使用する必要があります。

0

ほとんどの簡単なタイミングテストは、このようないくつかの擬似コードで実行優れている:Unixの由来プラットフォームで

start = get_time() 
for 1 .. 10: 
    do_the_task() 
end = get_time() 
diff = end - start 
print "%d seconds elapsed", diff 

、かなりまともになりエポック、からの秒とマイクロ秒で構造体を返しますgettimeofday(2)解像度のタイミング。他のプラットフォームでは、まともな時間ソースを探す必要があります。

関連する問題