首页 >后端开发 >C++ >为什么 C 的 cin 比 Python 的输入慢很多,如何改进?

为什么 C 的 cin 比 Python 的输入慢很多,如何改进?

Barbara Streisand
Barbara Streisand原创
2025-01-04 08:04:34642浏览

Why is C  's `cin` Significantly Slower than Python's Input, and How Can It Be Improved?

为什么从 stdin 读取行在 C 中比 Python 慢得多

在比较 Python 和 C 中的输入读取速度时,观察到C 代码的执行速度慢了一个数量级。

cin 缺乏缓冲

这种差异是由默认行为的根本差异引起的。 C 中的 cin 默认情况下与标准输入/输出 (stdio) 同步,导致它放弃输入缓冲,导致一次读取一个字符,这对于系统调用而言是一个昂贵的过程。

解决方案:禁用同步

为了提高性能,可以通过在开头添加以下行来禁用 cin 与 stdio 的同步程序:

std::ios_base::sync_with_stdio(false);

这允许 C 流独立缓冲 I/O,显着提高读取速度。

Straw poll 来说明差异:

Implementation Lines per second
Python (default) 3,571,428
cin (default/naive) 819,672
cin (no sync) 12,500,000
fgets 14,285,714
wc (unfair comparison) 54,644,808

此表展示了 cin 同步禁用时读取速度的巨大差异。

以上是为什么 C 的 cin 比 Python 的输入慢很多,如何改进?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn