Estoy en una situación en la que después de haber analizado y perfilado nuestro sistema, llegamos a la conclusión de que el componente de registro del sistema es uno de los muchos cuellos de botella que aproximadamente ~ 17% del tiempo de ejecución total - se registran muchas cosas.Sello de fecha/hora eficientemente calculado para fines de registro en unix/win32
De esto, aproximadamente el 5% del tiempo que consume el registrador está relacionado con la producción de una marca de fecha/hora en ascii en el siguiente formato: AAAAMMDD HHMMSS.fff - registramos aproximadamente 700k líneas por segundo. (aproximadamente 700K x (tiempo local y gettimeofday) llamadas por segundo)
Me preguntaba qué técnicas tienen los compañeros SOERS para producir sellos de tiempo de manera eficiente.
Las soluciones de plataforma cruzada serían bienvenidas.
Nota1: examinamos Boost.datetime - es genial, pero un poco lento para nuestras necesidades, std :: chrono es una solución perfecta, pero desafortunadamente tenemos que admitir compiladores anteriores a C++ 11.
Nota2: Hemos implementado una optimización simple que solo computa la parte de la fecha (aaaammdd) una por 24 horas, por lo tanto, solo tiene 1 llamada gettimeofday por línea, aunque no ayudó mucho.
¿El formato * que ocupa solo el 5% o incluye las otras llamadas para recuperar la hora? (Aunque, incluso si el 5% se convirtiera en 0%, seguiría siendo como ~ 16.7% en total :-) –
@pst: estas son solo las llamadas para rellenar las distintas estructuras de tiempo. el formateo (conversión a ascii) es otro problema por completo. –
@pst: pero cualquier idea para hacer el formateo sería grandiosa, ya usamos luts de ascii combos para acelerar el proceso ej .: 01020304050607080910111213141516171819202122232425262728293031 ¿algo como esto en mente? –