私は clock() を使用していますが、それがリセットされるか、最大になるかどうか疑問に思っています。私がそれを使用しているのは、以前の関数呼び出しからあまりにも影響を受けて違いを見つけることだけです。
これまでの助けに感謝しますが、VS '12でクロノを実際に機能させることはできませんが、とにかく必要以上だと思うので問題ありません。 t_time を現在の秒 0 ~ 60 だけを含む int に変換する方法がわかりません。
基準に関する限り、
clock_t
および で表現可能な時間の範囲と精度time_t
は実装定義です。
(C99、§7.23.1 ¶4)
したがって、範囲の保証はありません。の定義は、clock()
ラップアラウンドについては何も述べていませんが、
使用されたプロセッサ時間が利用できない場合、またはその値を表すことができない場合、関数は値を返します
(clock_t)(-1)
したがって、 の範囲を超えると、clock_t
「その値を表すことができない」と見なされる可能性があると言えます。一方、この解釈は、しばらくするclock()
と完全に役に立たなくなることを意味します。
実際、特定の実装 (glibc) に取り掛かると、次のことがわかります。
matteo@teokubuntu:~$ man 3 clock
Note that the time can wrap around. On a 32-bit system where CLOCKS_PER_SEC equals 1000000 this function will return the same value approximately every 72 minutes.
簡単な答えは、関数の時間を計るためだけに使用している場合、おそらくラップアラウンドしないということです。また、遅すぎる可能性があり、関数の持続時間がゼロになる可能性があります。高速に実行される関数の正確なタイミングが必要な場合は、Windows でこのような OS レベルの呼び出しを使用することをお勧めします。