Avatar ·

为什么从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++程序仍然比