C 標準は iostream のパフォーマンスが遅いことを義務付けていますか、それともコンパイラーのせいですか?
C 標準は iostream の要件を概説していますが、パフォーマンスの低下を強制するものではありません。ただし、この問題が示すように、実際の iostream の特定の実装では、次善のパフォーマンスが発揮される可能性があるという懸念があります。
C パフォーマンスに関する 2006 Technical Report によると、iostream の標準仕様は本質的に非効率な実装を必要とするものではありません。 。これは、前処理と最適化されたリンク手法により、多くのパフォーマンスの問題に対処できることを示唆しています。
問題で示されたプロファイリング結果は、時間のかなりの部分が std::basic_streambuf ライブラリ内の xsputn に費やされていることを示しています。この関数は、ストリーム バッファへのデータの実際のコピーを処理します。データの小さなチャンクを書き込むときに繰り返し呼び出され、かなりのオーバーヘッドが発生します。
しかし、この問題は、より大きなデータ チャンクを処理する場合、iostream のパフォーマンスの低下が比較的無視できることも示しています。これは、小規模な書き込みが頻繁に行われるシナリオでは、知覚される遅さが増幅される可能性があることを示唆しています。
結論として、C 標準では iostream のパフォーマンスが低いことは要求されていませんが、実装によっては、前処理とリンクの側面が推奨どおりに完全に最適化されていない可能性があります。テクニカルレポートに記載されています。そのため、iostream と手動のバッファ管理手法の間で観察されるパフォーマンスの変動は、特定のコンパイラとデータ操作の性質に依存する可能性があります。
以上が遅い iostream のパフォーマンスは C 標準の問題ですか、それともコンパイラの実装の問題ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。