ホームページ >バックエンド開発 >C++ >C の `cin` が Python の入力よりも大幅に遅いのはなぜですか?どうすれば改善できるでしょうか?

C の `cin` が Python の入力よりも大幅に遅いのはなぜですか?どうすれば改善できるでしょうか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-04 08:04:34651ブラウズ

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

C では Python よりも標準入力からの行の読み取りがはるかに遅い理由

Python と C で入力の読み取り速度を比較すると、次のことが観察されました。 C コードの実行速度は 1 桁遅くなります。

cin の不足バッファリング

この矛盾は、デフォルトの動作の根本的な違いから生じます。 C の cin は、デフォルトで標準入出力 (stdio) と同期されるため、入力バッファリングが行われず、その結果、文字を 1 つずつ読み取ることになり、システム コールの点で高価なプロセスとなります。

解決策: 同期を無効にします

パフォーマンスを向上させるには、cin の同期をプログラムの先頭に次の行を追加することで stdio を無効にできます:

std::ios_base::sync_with_stdio(false);

これにより、C ストリームが I/O を個別にバッファリングできるようになり、読み取り速度が大幅に向上します。

違いを説明するためのストロー投票:

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。