Самый быстрый способ получить местное время в Unix

Я исследую производительность журналирования в системе Unix. Дело в том, что я обнаружил, что самой дорогой операцией является получение даты.

В настоящее время я получаю время, как это —

timeb currTime;
struct tm localTime;
ftime( &currTime )
localtime_r(&currTime.time, &localTime);

Я изменил это на

struct timeval tv;
gettimeofday(&tv, NULL);
time_t curtime = tv.tv_sec;
struct tm localTime = *(localtime(&curtime));

и не увидел улучшения производительности. Поэтому мне интересно, может быть, это не самый быстрый способ получить местное время в системах Unix?

Пожалуйста, поделитесь своими мыслями об этом.

Спасибо заранее.

1

Решение

gettimeofday дает вам время UTC очень быстро. Преобразование в местное время не так быстро.

Отложите преобразование этого значения в местное время, пока не выйдете из критического для производительности пути.

Кроме того, вы можете кэшировать UTC в коэффициент преобразования местного времени один раз в день, чтобы ускорить преобразование в местное время, хотя это не идеально, вероятно, этого достаточно для ведения журналов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]