Я пытаюсь отслеживать системное время, прошедшее между несколькими приложениями и путями данных, через 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);
Из того, что я понимаю, вызов местного времени определенно несет некоторые накладные расходы и может снизить точность. Я могу быть совершенно неправ в этом, но я должен подождать, чтобы позвонить по местному времени, пока мой код для просмотра не завершится? Я предполагаю, что localtime просто делает недешевое преобразование результатов gettimeofday, и поэтому его следует поместить прямо перед оператором printf.