为什么在C ++中printf的执行速度比cout快?为什么scanf比cin慢?

我编写了一些程序,发现scanf和printf比使用cin和cout快得多?

评论
lest
lest

默认情况下,cin / cout浪费时间与C库的stdio缓冲区进行同步,因此您可以自由地将对scanf / printf的调用与对cin / cout的操作混合在一起。

通过关闭

std :: ios_base :: sync_with_stdio(false); 许多C ++教程还告诉您编写cout << endl而不是cout <<'\ n'。但是endl实际上比较慢,因为它会强制执行冲洗,这通常是不必要的。 (例如,如果您正在编写交互式进度条,则需要刷新,但是在写入一百万行数据时则不需要。)写'\ n'而不是endl。

同样,由于C ++是面向对象的,因此cin和cout是对象,因此由于对象绑定而增加了总体时间。

因此,一个简单的衬里“ std :: ios_base :: sync_with_stdio(false);”可以使cin / cout比printf / scanf更快。

希望这对您有帮助

点赞
评论