【发布时间】:2010-11-05 17:46:09
【问题描述】:
我不知道这是否属实,但是当我阅读有关提供问题的网站之一的常见问题解答时,我发现了一些引起我注意的东西:
检查您的输入/输出方法。在 C++ 中,使用 cin 和 cout 太慢了。使用这些,您将保证无法通过大量输入或输出来解决任何问题。请改用 printf 和 scanf。
有人可以澄清一下吗?真的在 C++ 程序中使用 scanf() 比使用 cin >> something 更快吗?如果是,那么在 C++ 程序中使用它是一个好习惯吗?我认为它是特定于 C 的,虽然我只是在学习 C++...
【问题讨论】:
-
我的猜测:糟糕的程序员将性能不佳归咎于标准库。有点像总是幽默的“我想我在 GCC 中发现了一个错误”的哭声。
-
@eclipse:我为比赛处理的 ACM 问题有大量的输入/输出,你的程序必须在 60 秒内解决问题......问题在这里。
-
--- 也就是说,如果您需要依赖 scanf() 来获得额外的性能提升,那么您解决问题的方式是错误的 :)
-
作为一个观察 - 我玩过它,在第二个问题 (PRIME1) - 使用相同的算法,两次,一次使用 cin/cout,一次使用 scanf/printf 和第一个版本比第二个更快(但足够接近以至于在统计上不相关)。这是被标记为输入/输出密集型的问题之一,输入/输出的方法没有任何统计差异。
-
@Eclipse - 感谢您提供有关测试这两种方法的信息。不过我很难过 - 我试图责怪 cin 和 cout,但现在我知道我的算法很烂:)
标签: c++ c performance io