ホームページ > バックエンド開発 > 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 が大きなチャンクを使用するのではなく、入力を 1 文字ずつ読み取ることを意味し、その結果、多数の負荷の高いシステム コールが発生します。

この制限に対処するには、メイン ファイルの先頭に次のステートメントを追加することで、この同期を無効にすることができます。 function:

std::ios_base::sync_with_stdio(false);
ログイン後にコピー

この変更により、cin は入力を独立してバッファリングできるようになり、パフォーマンスが大幅に向上します。

さらに、fgets 関数を使用すると、同期のオーバーヘッドを発生させずに、より効率的かつ直接的に入力行を読み取ることができます。

概要:

C のデフォルトの同期設定では、バッファ管理のためのシステムコールが多くなり、Python よりも遅くなります。標準入力入力を読み取っています。パフォーマンスを向上させるには、この同期を無効にするか、fgets 関数を使用することをお勧めします。

以上がC の `stdin` の読み込みが Python の読み込みよりも遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート