gettimeday と localtime を使用して、複数のアプリケーションとデータ パスで経過したシステム時間を監視しようとしています。この例では、コードを実行する直前にシステム時間 (マイクロ秒の精度) を取得したいと考えています。私は現在、次のようにしています:
#include <stdio.h>
#include <sys/time.h>
struct timeval tv;
struct timezone tz;
struct tm *tm;
**code I don't care about**
gettimeofday(&tv, NULL);
tm=localtime(&tv.tv_sec);
**code to watch**
printf(" %d:%02d:%02d %ld \n", tm->tm_hour, tm->tm_min,
tm->tm_sec, tv.tv_usec);
私が理解していることから、 localtime 呼び出しは間違いなく少しオーバーヘッドが発生し、精度が低下する可能性があります。これについては完全に間違っているかもしれませんが、監視するコードが完了するまで localtime を呼び出すのを待つ必要がありますか? 私は localtime が gettimeofday の結果のやや高価な変換を行っているだけであると想定しているため、printf ステートメントの直前に配置する必要があります。