为什么从stdin读取行在C++中比在Python中慢?
大家好!我是一名初级C++开发者,从Python转过来,遇到了一个意想不到的问题。在Python中,我经常解决需要从标准输入读取大量数据(例如1000万行)的问题。使用`sys.stdin.readline()`的Python代码运行得相当快。但当我尝试用C++编写类似代码,使用`std::getline`和`std::cin`时,性能却差了好几倍。我写了一个简单的基准测试:从stdin读取所有行并只计算它们的数量。以下是我使用的C++代码:
```cpp
#include
#include
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::string line;
int count = 0;
while (std::getline(std::cin, line)) {
++count;
}
std::cout << count << std::endl;
return 0;
}
```
即使关闭了与stdio的同步(据我所知这应该能加速),C++程序仍然比