프로파일 링을 통해 나는 여기에 sprintf가 오랜 시간이 걸린다는 것을 발견했습니다. y/m/d h/m/s 필드에서 맨 앞의 0을 처리하는 더 나은 성능의 대안이 있습니까?성능 핫스팟으로 측정 한 sprintf를 어떻게 개선하고 바꿀 수 있습니까?
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()
을 나타냅니다.
얼마나 오랫동안 " "? 나는 마이크로 초 (CPU에 의존)보다는 밀리 세컨드 일 것을 기대하고있다. – Roddy
당신은 sprintf를 덜 자주 호출하는 방법을 찾는 것이 더 낫다. – Brian