2

c++ stl ライブラリのコンテキストでは、より良い string::+= または sstream::<< を実行するものは何ですか?それとも他の何かに依存しますか?

編集:追加するデータのサイズに依存しますか?

4

3 に答える 3

4

多くのさまざまなパラメーターに依存します。主なパラメーターは、これらの演算子とコンパイラー自体の実装です。

コンパイラの特定のバージョンでの単純なテストは、単純な観察である可能性があります。たとえば、単純にstringorに短い文字列を 10,000,000 回追加しistringstreamて時間を測定すると、ここで行われます。+=の方が速いことを示してい<<ます。

time (ms):534.02   // For +=
time (ms):927.578  // For <<

実際のアプリケーションでは、 を使用する必要があります+=。これが遅く、パフォーマンスが低下していると思われる場合は、別のものをテストしてください。プロファイリングがキーワードです。

于 2013-10-31T09:14:32.983 に答える