プロファイリングを通じて、ここでの sprintf には長い時間がかかることがわかりました。y/m/dh/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);
}
注: OP はコメントで、これは簡略化された例であると説明しています。「実際の」ループには、データベースからのさまざまな時間値を使用する追加のコードが含まれています。sprintf()
プロファイリングにより、犯人が特定されました。