C プログラムで scanf() を使用すると cin よりも高速ですか?
プログラマの間で一般的に信じられているのは、stdio 関数 scanf() を使用することです。 printf() は、C 言語の cin および cout よりも高速です。この質問は、この主張を調査し、経験的な証拠を提供します。
正誤: scanf() は cin より高速です
提供された回答が示すように、scanf() は実際にC の cin よりも大幅に高速です。指定されたベンチマークでは、数百万の数値を含む大きなテキスト ファイルを処理する場合、scanf() は cin のパフォーマンスを 4 倍上回りました。
速度の違いはなぜですか?
速度の違いは、それぞれの機能の基礎となる実装に起因します。 scanf() は、効率と速度に重点を置いた C の標準 I/O ライブラリに実装されています。一方、 Cin は C の iostream ライブラリに実装されており、タイプ セーフと幅広いデータ型のサポートを優先します。
ベスト プラクティス: cin ではなく scanf() を使用します
パフォーマンスの結果に基づくと、常に cin ではなく scanf() を選択したくなるかもしれません。ただし、この方法はいくつかの理由から推奨されません:
代替案: std::ios::sync_with_stdio(false)
パフォーマンスが重要な考慮事項である場合、妥協的な解決策は std::ios::sync_with_stdio(false) を呼び出すことです。これにより、stdio と iostream の間の同期が無効になり、オーバーヘッドが削減され、iostream 操作のパフォーマンスが向上します。
以上がC の `scanf()` は本当に `cin` より速いのか: 事実かフィクションか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。