Благодаря профилированию я обнаружил, что спринт здесь занимает много времени. Есть ли более эффективная альтернатива, которая по-прежнему обрабатывает ведущие нули в полях y / m / d h / m / s?
SYSTEMTIME sysTime;
GetLocalTime( &sysTime );
char buf[80];
for (int i = 0; i < 100000; i++)
{
sprintf(buf, "%4d-%02d-%02d %02d:%02d:%02d",
sysTime.wYear, sysTime.wMonth, sysTime.wDay,
sysTime.wHour, sysTime.wMinute, sysTime.wSecond);
}
Примечание. ФП поясняет в комментариях, что это упрощенный пример. «Реальный» цикл содержит дополнительный код, который использует различные значения времени из базы данных. Профилирование определило sprintf()
как нарушителя.