首页 > 后端开发 > C++ > 为什么 C `stdin` 的读取速度比 Python 慢很多?

为什么 C `stdin` 的读取速度比 Python 慢很多?

Linda Hamilton
发布: 2025-01-04 17:11:41
原创
254 人浏览过

Why is C   `stdin` Reading So Much Slower Than Python's?

了解 C 中 Stdin 读取与 Python 相比的缓慢性能

在本文中,我们深入研究了在 C 中从标准输入 (stdin) 读取行的原因执行速度明显慢于其对应的 Python。

比较以下 C 和 Python 时代码:

C :

getline(cin, input_line);
登录后复制

Python:

for line in sys.stdin:
登录后复制

令人惊讶的结果出现,Python 优于 C一个数量级。这种差异可以归因于 C 中不同的默认设置。

默认情况下,C 中的 cin 流与标准 I/O 系统(stdio)同步,这导致它避免输入缓冲。这意味着 cin 将逐个字符读取输入,而不是使用较大的块,从而导致大量昂贵的系统调用。

要解决此限制,您可以通过将以下语句添加到 main 的开头来禁用此同步函数:

std::ios_base::sync_with_stdio(false);
登录后复制

通过此修改,cin 将被允许独立缓冲其输入,从而显着提高性能。

此外,您可以使用 fgets 函数,它提供了一种更高效、更直接的方式来读取输入行,而不会产生同步开销。

总结:

C 中的默认同步设置导致更多的系统调用用于缓冲区管理,使其比 Python 读取 stdin 输入慢。为了提高性能,建议禁用此同步或使用 fgets 函数。

以上是为什么 C `stdin` 的读取速度比 Python 慢很多?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板