次のプログラムでは、ジョブ (for ループ) の実行時間を測定しようとしました。ほとんどの場合は問題なく動作しますが、時には負の値が返されることもあります!! 私の最初の推測は、変数がオーバーフローする可能性があるということです。私が正しいかどうかに関係なく、誰か教えてください。どうすれば問題を解決できますか?
ありがとう
int main(int argc, char **argv)
{
long int ST;
long int ET;
struct timespec gettime_now;
clock_gettime(CLOCK_REALTIME, &gettime_now);
ST= gettime_now.tv_nsec;
for (i=0; i < 1000; i++)
a[i]=b[i];
clock_gettime(CLOCK_REALTIME, &gettime_now);
ET= gettime_now.tv_nsec;
printf("Time diff: %ld\n", ET-ST);
}