シェル スクリプトの実行にかかる時間を c で表す基本的なものを書いています。
私は持っている
gettimeofday(&start, NULL);
// code here
gettimeofday(&end, NULL);
// print end - start
timeval 構造体には私が説明した tv_sec と tv_usec があることを知っていますが、「sleep 3」などのスクリプトでも、この終了と開始の差はまだ 0 です。理由について何か推測はありますか?
あなたはこれを読むべきです: gettimeofday() は時間を測定するために決して使用されるべきではありません
clock_gettime(CLOCK_MONOTONIC, ...)
代わりに試してください。
たとえば、これを試してください:
double dtime(){
double t;
struct timeval tv;
gettimeofday(&tv, NULL);
t = tv.tv_sec + ((double)tv.tv_usec)/1e6;
return t;
}
…
double t0 = dtime();
…
printf("Time spend: %g seconds\n", dtime()-t0);