Thông qua profiling tôi đã phát hiện ra rằng sprintf ở đây mất một thời gian dài. Có một phương án hoạt động tốt hơn vẫn xử lý các số không đứng đầu trong các trường y/m/d h/m/s không?Làm cách nào để cải thiện/thay thế sprintf, mà tôi đã đo là điểm phát sóng hiệu suất?
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);
}
Lưu ý: Các OP giải thích trong các ý kiến rằng đây là một ví dụ lột xuống. Vòng lặp "thực" chứa mã bổ sung sử dụng các giá trị thời gian khác nhau từ cơ sở dữ liệu. Tiểu sử đã xác định chính xác sprintf()
là người phạm tội.
Bao lâu là một "thời gian dài "? Tôi hy vọng nó sẽ được tính bằng micro giây thay vì mili giây (tùy thuộc vào CPU) – Roddy
Bạn nên tìm cách để gọi sprintf ít thường xuyên hơn. – Brian