質問: clock(); printf("かかった時間:%f",(double)(end-start)/clocks_per_sec); ----------------------------- 上のようにしているのですが、実行結果は0.00000秒と出てしまいます。処理のところは足し算を何題か出題し解答を入力し正解したら次の問題というようなことをしています。 確認のためstartにclock()を代入した後とendに代入したあとでprintfでstartとendを出力してみましたが、どちらの値も10.00000で同じ値となっています。0秒になるのはこれのせいだと思うのですが、どうして同じ値になるのでしょうか?
回答: 処理系等にも依存しますが、clock関数の分解能に比べて、処理が短すぎることが原因かと思います。 clock_tの精度と実際の分解能は必ずしも一致していません。例えば、clock_tが1msec単位であったとしても、実際の分解能が50msecしかない場合もあるわけです。 分解能の悪さに対する対策としては、同じ処理を1000回とか10000回とか繰り返して、その時間を計測するのが常套手段ですが、繰返しができないようなものや、高い計測精度を必要とする場合は、別の方法を検討するしかありません。