【发布时间】:2011-05-05 16:05:58
【问题描述】:
我正在尝试通过 gettimeoday 和 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);
据我了解,本地时间调用肯定会产生一些开销,并且会降低准确性。我可能完全错了,但我应该等到我的 code to watch 完成后再调用 localtime 吗?我假设 localtime 只是对 gettimeofday 的结果进行半昂贵的转换,因此它应该放在 printf 语句之前。
【问题讨论】:
-
你根本不需要打电话给
localtime();gettimeofday()足以监控经过的时间。 -
我不想计时特定代码sn-p的长度,而是想以微秒为单位准确抓取系统时间。我还应该只需要 gettimeofday() 吗?
-
是的,我根本看不到对
localtime()的调用添加了什么。
标签: c++ c timing localtime gettimeofday