由于您不使用真正的格式,并且只打印单个字符,您可以使用简单的putchar()函数:
for (y = 0; y < MAX_Y ; y++)
{
putchar ('\t');
for (x = 0; x < MAX_X; x++)
{
putchar(base[y][x]);
}
putchar('\n');
}
在我的机器上,迭代循环100,000,在3次运行中测试它并将输出重定向到/ dev / null,给了我:
> 6.679u,6.663u和6.766u with printf,
putchar为> 3.309u,3.315u和3.312u,
> 0.263u,0.261u和0.263u(使用putchar_unlocked).
如果我使用终端输出,我有:
> 8.153u with printf,
用putchar> 3.862u,
> 0.634u,用putchar_unlocked.
经过的时间是:
> 0:09.46 with printf,
> 0:07.75与putchar,
> 0:05.06使用putchar_unlocked.
-Edit —-单写———
您还可以将所有内容分组到一个字符串中并使用puts,如下所示:
char baseString[MAX_Y*(MAX_X+2)+1];
int p = 0;
for (int y = 0; y < MAX_Y ; y++)
{
baseString[p++] = '\t';
for (int x = 0; x < MAX_X; x++)
{
baseString[p++] = base[y][x];
}
baseString[p++] = '\n';
}
baseString[p] = 0;
puts(baseString); // or fwrite(baseString,p,1,stdout);
在这种情况下,测试给出:
> 0.448u,1.155s和0:04.99(看跌)
> 0.418u,1.077s,0:04.81(fwrite)
这比putchar_unlocked略好.
所有测试均在OSX 10.9,Intel Core i7 2.3Ghz上进行.