この記事では、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 サイトの他の関連記事を参照してください。