Я столкнулся с интересной загадкой производительности, но прежде чем я начну вникать в glibc и вводить ошибки слева направо и по центру, я просто хотел получить хоть какое-то понимание, которое могло бы быть там.
У меня есть код, который в одной из функций делает это:
gettimeofday( &tv, 0);
localtime_r( &tv.tv_sec, &local_tm );
char result[25];
strftime( result, 24, "%Y-%m-%d %H:%M:%S", &local_tm);
Остальная часть кода не имеет отношения к этому вопросу. Когда я заменяю его следующим образом:
gettimeofday( &tv, 0);
localtime_r( &tv.tv_sec, &local_tm );
char result[25];
snprintf(result, sizeof(result), "%04d-%02d-%02d %02d:%02d:%02d",
local_tm.tm_year+1900, local_tm.tm_mon+1,
local_tm.tm_mday, local_tm.tm_hour, local_tm.tm_min,
local_tm.tm_sec);
, в среднем я получаю повышение производительности на 20%.
Кто-нибудь сталкивался с этим? Эта ОС специфична?