c语言printf char数组,在C中输出二维char数组的最快方法

本文探讨了在C语言中不同输出函数putchar、printf和puts的性能差异。通过实验比较,在输出大量文本时,putchar和putchar_unlocked在速度上有优势,而puts和fwrite在某些场景下能提供更好的效率。测试结果显示,putchar_unlocked在无终端输出时表现最佳,puts和fwrite在处理字符串时速度较快。
摘要由CSDN通过智能技术生成

由于您不使用真正的格式,并且只打印单个字符,您可以使用简单的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上进行.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值