1

私は clock() を使用していますが、それがリセットされるか、最大になるかどうか疑問に思っています。私がそれを使用しているのは、以前の関数呼び出しからあまりにも影響を受けて違いを見つけることだけです。

これまでの助けに感謝しますが、VS '12でクロノを実際に機能させることはできませんが、とにかく必要以上だと​​思うので問題ありません。 t_time を現在の秒 0 ~ 60 だけを含む int に変換する方法がわかりません。

4

3 に答える 3

3

基準に関する限り、

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.
于 2013-06-14T22:36:58.220 に答える
0

簡単な答えは、関数の時間を計るためだけに使用している場合、おそらくラップアラウンドしないということです。また、遅すぎる可能性があり、関数の持続時間がゼロになる可能性があります。高速に実行される関数の正確なタイミングが必要な場合は、Windows でこのような OS レベルの呼び出しを使用することをお勧めします。

于 2013-06-14T23:32:24.213 に答える