タイミング機能のうち、time
、clock
getrusage
、clock_gettime
、gettimeofday
とtimespec_get
、私は彼らが実装されている方法を明確に理解したいとどのような状況で、私はそれらを使用する必要があります知っているために、その戻り値がどのようなもの。
まず、壁時計の値を返す関数を、プロセスまたはスレッドの値を返す関数と比較して分類する必要があります。渡されたパラメーターに応じて、壁gettimeofday
時計の値をclock_gettime
返し、壁時計の値、プロセスまたはスレッドの値を返しますClock
。プロセス値getrusage
をclock
返します。
次に、2番目の質問は、これらの関数の実装と、その結果としての正確さに関するものです。これらの関数が使用するハードウェアまたはソフトウェアのメカニズム。
getrusage
カーネルティック(通常は1ミリ秒の長さ)のみを使用しているようです。その結果、ミリ秒よりも正確になることはありません。正しいですか?次に、getimeofday
関数は利用可能な最も正確な基盤ハードウェアを使用しているようです。結果として、最近のハードウェアでは、その精度は通常マイクロ秒です(APIのためにそれ以上になることはありません)。何をclock
、「近似」についてのmanページを話すが、それは何を意味するのでしょうか?何をclock_gettime
、APIはナノ秒である、それは基礎となるハードウェアで許可されていれば、それはとても正確であることが可能だということを意味していますか?単調性はどうですか?
他の機能はありますか?
clock_gettime
gettimeofday()
clock_gettime()