Me he encontrado con un enigma de rendimiento interesante, pero antes de empezar a profundizar en glibc y escribir errores a la derecha y al centro solo quería obtener alguna información que pudiera estar ahí.strftime performance vs. snprintf
que tienen código que en una de las funciones hace esto:
gettimeofday(&tv, 0);
localtime_r(&tv.tv_sec, &local_tm);
char result[25];
strftime(result, 24, "%Y-%m-%d %H:%M:%S", &local_tm);
El resto del código es irrelevante para esta pregunta. Cuando lo reemplazo con esto:
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);
en promedio recibo un aumento del rendimiento del 20%.
¿Alguien se encontró con esto? Es este sistema operativo específico?
¿Qué sistema operativo/compilador está utilizando? –
Así 'snprintf' es más eficiente que' strftime' en su sistema. Esto no se consideraría un "error". –
'strftime' puede tener que ocuparse de la localización (más que' snprintf'). –