首页  >  文章  >  后端开发  >  为什么 C 标准输入读取速度比 Python 慢,如何改进?

为什么 C 标准输入读取速度比 Python 慢,如何改进?

DDD
DDD原创
2024-11-23 07:23:18847浏览

Why is C   Standard Input Reading Slower Than Python's, and How Can It Be Improved?

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

尽管有预期,从标准输入读取输入行的 C 代码可以执行速度明显慢于 Python 对应项。这种差异源于 C 中的默认设置。

默认输入流配置

默认情况下,C 输入流 (cin) 与标准输入/输出 (stdio) 同步)。这种同步意味着 cin 尝试避免任何输入缓冲,从而导致它一次读取一个字符。

为什么缓冲很重要

通常,输入流以较大的大小缓冲输入块,减少数据检索所需的系统调用数量。但是,基于 FILE* 的 stdio 和 iostream 的单独实现和缓冲区在一起使用时可能会导致问题。

为了防止潜在的冲突,默认情况下流与 stdio 同步。 Cin 逐个读取字符,带来很大的开销,尤其是在处理数百万行时。

解决方案

要提高性能,请使用sync_with_stdio(false) 禁用流同步main 函数开头的方法:

std::ios_base::sync_with_stdio(false);

通过此更改,C 流可以独立缓冲,从而加快输入速度

替代方法:fgets

提高输入速度的另一种方法是使用 fgets 函数代替 getline:

char buffer[1024];
while (fgets(buffer, sizeof(buffer), stdin)) {
    // Process the line
}

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

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