の分解能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_ftimeFILETIME::dwHighDateTime/dwLowDateTime