向stdout发送大量字符串的最佳方法是什么?

时间:2014-01-24 09:25:53

标签: c char stdout

我有一个函数返回指向包含4个字符的char的指针。

char *foo(unsigned short n)
{
    return "abc\n";
}

现在我运行了10万次,然后将结果发送到stdout。它必须尽可能以最快的方式完成 在没有书写的情况下运行此功能10万次大约需要0.45秒 我尝试了什么:

  • 的printf
    ... 
    printf("%s", foo(n));
    ... 

~6.5s

  • fwrite的
    ...
    fwrite(foo(n), 4, 1, stdout); 
    ...   

~9.9s

  • strncat to buffer and fwrite
    char buffer[400001] = "";
    ... 
    strncat(buffer, foo(n), 4);
    ... 
    fwrite(buffer, 400000, 1, stdout); 

~7s

有没有办法让它更快?我想至少低于5s。

1 个答案:

答案 0 :(得分:0)

根据您的好评,我做了一些测试,我带来的是fputs()是最快的。 > out.txt为~0.45,> NUL为〜0.61。事实证明,控制台输出正在减慢一切。