2012-04-03 10 views
1

次のコードを使用して、検索機能の除外時間をミリ秒単位で計算しました。C言語での実行時間

sBegin = clock(); 
searching(); 
sEnd = clock(); 
searchingTime = ((float)(sEnd-sBegin)/CLOCKS_PER_SEC)*1000; 

結果は、たとえば952.000000です。私は10進数の後のすべての桁が常にゼロである理由を知りたいですか?どうすれば解決できますか? C言語で実行時間を計算する良い方法はありますか?あなたは整数の除算をやっている

+4

典型的なシステムの 'clock()'解像度は、10ミリ秒や20ミリ秒のようなものです。 –

+0

コードに左括弧がありません。 (float)((sEnd-sBegin)/ CLOCKS_PER_SEC)* 1000'または((float)(sEnd-sBegin)/ CLOCKS_PER_SEC)* 1000'または...? –

+0

@undur_gongor:結果は変更されませんでした。 –

答えて

1

、あなたはキャストを配置し、同じものを得ることができる他の場所があります

searchingTime = ((sEnd-sBegin)/(float)CLOCKS_PER_SEC)*1000; 

を試してみてください、これはただ一つの可能​​性

EDITです:

ここで質問herehereを確認してください。私はこれらがあなたの質問に答えるかもしれないと思う(基本的にそれはそれをカットしようとしているclock()のようには見えない)。上記の私の答えは間違っています。

+0

私は同じことをしたくありません。私は10進数の後に数字を入れたい。プログラムの小数点以下の桁は常にゼロです。 –

+0

私は、私の例と同じことを意味しました。整数分けをしているときと同じ答えではありません。 – SirGuy

+0

@GuyGreer:これは原因ではありません(訂正された質問を参照してください)。とにかく、952は1000の倍数ではありません。 –

0

参照Kerrek SBさんcomment

それはclockの解像度に依存します。精度が1ミリ秒の値を返す場合は、1ミリ秒より細かい差を測定することはできません。これはあなたのシステムの場合のようです。

時間を測定するのに便利な方法はありません。おそらく、あなたのプラットフォームは、より良い解決でシステム時間を得るための特定の機能を提供するでしょう。

関連する問題