Linux C言語高精度時間関数:gettimeofday()取得時間差
1892 ワード
#include
int gettimeofday(struct timeval*tv,struct timezone *tz )
struct timeval{
long tv_sec;/* */
long tv_usec;/* */
};
struct timezone{
int tz_minuteswest;/* Greewich */
int tz_dsttime;/*type of DST correction*/
}
struct timeval tvBegin, tvEnd;
gettimeofday(&tvBegin, NULL);
// ...
gettimeofday(&tvEnd, NULL);
//<1>. :
double dDuration = 1000 * (tvEnd.tv_sec - tvBegin.tv_sec) + ((tvEnd.tv_usec - tvBegin.tv_usec) / 1000.0);
//<2>. :
double dDuration = (tvEnd.tv_sec - tvBegin.tv_sec) + ((tvEnd.tv_usec - tvBegin.tv_usec) / 1000.0) / 1000.0;
注意:秒数を取得する場合、分母は1000.0である必要があり、1000であれば整数を返すので、正確ではない.理由:同じデータ型のデータ、変数を演算し、結果は元のデータ型を維持します.異なるデータ型のデータ、変数が演算されると、結果は精度の高いデータ型となる.たとえば、1/2の結果は0です.1.0/2の結果は0.5 C言語のその他の時間関数(Linux&Win)