の分解能time_t
は、ほとんどのプラットフォームで最大 1 秒です。つまり、ほとんどのプラットフォームでtime_t
は、1970 年 1 月 1 日の午前 0 時 (UTC) から経過した秒数をカウントする整数 (32 ビットまたは 64 ビット) の値になり、1 秒の精度しか達成できません。
したがって、time_t
値の合計も 1 秒の分解能しか示しません (に変換した後でも小数部分はありませんdouble
)。
上記で述べたように、累積しようとしている値を取得するためにどのネイティブまたは OpenMP 呼び出しを使用していますか?time_t
ネイティブの *nixgetrusage()
呼び出しを使用してrusage
構造体 (プラットフォームがサポートしている場合) にユーザー/カーネル時間を入力する場合、またはgettimeofday()
壁時間を取得するために使用する場合は、tv_sec
とtv_usec
フィールドの両方を使用struct timeval
してdouble
値 (ミリ秒または-より良い解像度、通常)、time_t
計算の代わりにそれを使用します。
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
これに対応して、ユーザー/カーネル時間またはWindows プラットフォームのウォール時間にGetThreadTimes
/を使用してから、 を組み合わせることができます。GetProcessTimes
_ftime
FILETIME::dwHighDateTime/dwLowDateTime