C言語関係掲示板

過去ログ

No745 一定時間のループ回数を数える

[戻る] [ホームページ]
No.9261

一定時間のループ回数
投稿者---つき(2003/09/10 15:57:42)


 一定時間のループ回数を数えるプログラムなのですが、
実行するたびに毎回、異なる値が出力されます。
なぜ毎回違うのか教えてください。 お願いします。


#include <stdio.h>
#include <time.h>

#define  TIME   0.1

int main()
{
	clock_t start;
	int     count = 0;

	start = clock();
	while((double)(clock() - start) / CLOCKS_PER_SEC < TIME)
		count++;

	printf("%d\n", count);
}



No.9264

Re:一定時間のループ回数
投稿者---nop(2003/09/10 16:42:15)


> 一定時間のループ回数を数えるプログラムなのですが、
>実行するたびに毎回、異なる値が出力されます。
>なぜ毎回違うのか教えてください。 お願いします。

微妙な時間のずれ(正確に指定時間を検出できないため)や、
マルチタスク環境では他のタスクの処理とのタイムスライスなど、
複数の要因があるかと思います。

No.9265

Re:一定時間のループ回数
投稿者---YuO(2003/09/10 16:54:50)


> 一定時間のループ回数を数えるプログラムなのですが、
>実行するたびに毎回、異なる値が出力されます。

え〜っと、
・ソフトウェア的な環境
・ハードウェアの状況
などが全て一致した状況ならともかく,そうでなければ異なるのは当然です。

たとえば,タイマーがカウントアップする直前に最初のclock()呼び出しが走った場合と,
カウントアップした直後に最初のclock()呼び出しが走った場合では,
当然カウントする回数は異なります。

また,実装によっては,単に現在時刻からプログラムの開始時刻を引くことによって,
時間を算出していることもあります(VC++など)。
#標準ではマルチプロセス環境でどのように振る舞うかは全く触れられていない
その場合,同時に実行しているプログラムが時間を使えばカウントされる回数は少なくなりますし,
同時に実行しているプログラムが全く時間を消費しなければカウント回数は多くなります。