C 標準ライブラリの iostream のパフォーマンスが遅い
C 標準ライブラリの iostream ではパフォーマンスの低下が明示的に要求されていない可能性がありますが、C のパフォーマンスに関する技術レポートはその処理の特定の側面により、
標準で義務付けられている非効率
レポートによると、iostream の実装には通常、複数のファセットにわたる分散処理が含まれます。これにより、各ファセットの操作に関連するオーバーヘッドにより、固有の非効率が発生する可能性があります。
Facets と Write()
ただし、ファセットは write( ) 操作で、ostringstream コードをプロファイリングすると、かなりの時間が費やされていることがわかります。 std::basic_streambuf::xsputn()。この関数はさまざまなチェックと更新を実行するため、追加の処理オーバーヘッドが発生します。
最新のコンパイラーにおける最適化
レポートでは、一部のコンパイラーが前処理または高度なリンク技術を使用して、 iostream に関連する非効率性を軽減します。ただし、現在のコンパイラのどれだけがこれらの最適化を組み込んでいるかは不明です。
代替実装
実際には、Visual C 2010 や gcc 4.3.4 などのコンパイラは、次のような最適化を備えたパフォーマンスを示します。 Vector
実際的な考慮事項
テストで観察された iostream のパフォーマンスの低下は、書き込みの最悪のシナリオに起因しています。小さなデータの塊を繰り返し処理します。実際のアプリケーションでは、より大きなデータ ブロックを処理することでオーバーヘッドの影響が軽減され、iostream がそのメモリセーフおよびタイプセーフ設計の利点を最大限に活用できるようになります。
以上がC iostream のパフォーマンスが時々遅くなるのはなぜですか? 代替手段が必要になるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。