掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
std::stringstreamのwrite(buf, 1000000)が遅いです (ID:67393)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> write(buf, 1000000); > とすると一気に1MB増やしての再割り当てをするのではなく、 > 内部的に少しずつ増やして何度何度も再割り当てしてるということでよろしいでしょうか? ちゃいます。 writeされるたびに、追加分でバッファが溢れるようなら拡張します。 どのくらい拡張されるかは実装次第なのですが、大抵の実装では"現サイズの2倍"みたいです。 > stringに予めバッファを確保しておく方法だと、 > 1.増分による更なる再割り当て時と > 2.確保したバッファよりデータが小さかった時に > 今まで何バイト書き込んだかを覚えておかないとダメということですよね。 ちゃいます。 reserveでNバイト確保しておけば "その量に達するまではメモリ再割り当てを行わない" てことです。Nを超せば再割り当てが行われます。 > char*を内包するRead,Writeするだけのクラスを > 作った方が手っ取り早いでしょうか。 わかんない。 最終サイズがわかんないのに、なぜこれだとOK? 巨大文字列を扱うなら、STLportが提供する rope なんか使えるかも。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.