clock関数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
turasan
記事: 21
登録日時: 6年前

clock関数について

#1

投稿記事 by turasan » 6年前

バブルソートにかかった時間を測定するコードを書きました。

実際にバブルソートを行っているfor文の前後で、clock関数を呼び出し、
その二つの差をとることによって、for文にかかった時間を測定しています。

しかしprintf関数で、その時間を出力すると、
0.00000となってしまい、ずっと0が続いてしまいます。試しに小数点以下のケタ数を、
%.10fと書き直してみたのですが、やはりずっと0としか表示されません。

これは、for文にかかった処理時間が、このケタ数では表示できないほどもっと速いということなのでしょうか。
それとも他に何か原因が考えられますでしょうか。

コード:

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

//関数プロトタイプ宣言
void bubble_sort(int sort[], int elenum2);

int main(void)
{

	int ary[] = {16,21,95,32,20,73,73,32,12,5,2,45,29,9,7};

	int elenum1 = 15; //要素数

	bubble_sort(ary, elenum1);

	return 0;
}

//バブルソート関数
void bubble_sort(int sort[], int elenum2)
{
	int i, j, t;
	clock_t start, end;

	start = clock();

	for(i = 0; i < elenum2 -1; i++){
		for(j = elenum2 - 1; j > i; j--){
			if(sort[j-1] > sort[j]){
				t = sort[j];
				sort[j] = sort[j-1];
				sort[j-1] = t;
			}
		}
	}

	end = clock();
	
	for(i = 0; i < elenum2; i++){
		printf("%d, ", sort[i]);
	}
	
	putchar('\n');
	printf("%.5f秒かかりました\n", (double)(end-start)/CLOCKS_PER_SEC);
	return;
}

アバター
みけCAT
記事: 6296
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: clock関数について

#2

投稿記事 by みけCAT » 6年前

turasan さんが書きました:これは、for文にかかった処理時間が、このケタ数では表示できないほどもっと速いということなのでしょうか。
その可能性は考えられます。
また、
clockの精度がミリ秒単位程度しかないかもしれません。
試しに、要素数を10000個程度にしてみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

turasan
記事: 21
登録日時: 6年前

Re: clock関数について

#3

投稿記事 by turasan » 6年前

要素数を10000個にしたところ、表示されました。
ちなみに0.8秒ほどでした。

clock関数の精度は環境に依存しているのでしょうか。
だとすると、自分のPC上でより高い精度を表示をしたい場合、clock関数では不可能ということなのでしょうか。

アバター
みけCAT
記事: 6296
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: clock関数について

#4

投稿記事 by みけCAT » 6年前

turasan さんが書きました:clock関数の精度は環境に依存しているのでしょうか。
はい。
turasan さんが書きました:だとすると、自分のPC上でより高い精度を表示をしたい場合、clock関数では不可能ということなのでしょうか。
いいえ。PCのマシンが同じでも、OSやコンパイラを変えれば、より高い精度での表示が可能かもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

turasan
記事: 21
登録日時: 6年前

Re: clock関数について

#5

投稿記事 by turasan » 6年前

OSやコンパイラによって、CLOCKS_PER_SECの定義が違うということなのですか?。
表示の精度はこの定義に依存しているのでしょうか。

アバター
みけCAT
記事: 6296
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: clock関数について

#6

投稿記事 by みけCAT » 6年前

turasan さんが書きました:OSやコンパイラによって、CLOCKS_PER_SECの定義が違うということなのですか?。
表示の精度はこの定義に依存しているのでしょうか。
はい。
正確には、表示の精度ではなく計測の精度ですね。
さらに正確には、「計測の精度がこの定義に依存する」ではなく、「計測の精度をCLOCKS_PER_SECに定義する」かもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

turasan
記事: 21
登録日時: 6年前

Re: clock関数について

#7

投稿記事 by turasan » 6年前

ありがとうざいました。

閉鎖

“C言語何でも質問掲示板” へ戻る