我必須在C++中創建自己的fprintf方法,但通過比較我的方法和標準方法的執行時間,我的速度幾乎慢了3倍。我做錯了什麼?書寫自定義FPrintF
void FPrintF(const char *aFormat, ...)
{
va_list ap;
const char *p;
int count = 0;
char buf[16];
std::string tbuf;
va_start(ap, aFormat);
for (p = aFormat; *p; p++)
{
if (*p != '%')
{
continue;
}
switch (*++p)
{
case 'd':
sprintf(buf, "%d", va_arg(ap, int32));
break;
case 'f':
sprintf(buf, "%.5f", va_arg(ap, double));
break;
case 's':
sprintf(buf, "%s", va_arg(ap, const char*));
break;
}
*p++;
const uint32 Length = (uint32)strlen(buf);
buf[Length] = (char)*p;
buf[Length + 1] = '\0';
tbuf += buf;
}
va_end(ap);
Write((char*)tbuf.c_str(), tbuf.size());
}
errr你能解決你的問題的格式嗎? –
printf寫得不錯:)。並且通過許多編譯來支持編譯時間。 –
你正在使用sprintf寫出buf。然後,sprintf必須解析格式並執行輸出。 – Blacksilver