掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
std::stringstreamのwrite(buf, 1000000)が遅いです (ID:67406)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
stringstreamにこだわるのでなければ、vector<char>を使うのも手かもしれません。 back_inserter() (back_insert_iteratorクラス) や、vector::push_back()を 使えば、メモリの再確保はSTLにまかせっきりにできますし。 #include <vector> #include <iterator> #include <algorithm> char g_bytes[1024 * 1024]; int main() { std::vector<char> v; std::copy(g_bytes, g_bytes + sizeof(g_bytes), std::back_inserter(v)); return 0; } これはVC++6でも一瞬で終わりました。 内部で呼び出されている、vector<char>::push_back()は、stringbufと異なり バッファ不足時、バッファサイズを倍々に増やしているようです。 もっとも、VC++6から他の処理系に移ったときにVC++6のstringstreab::write()のように 大幅な速度低下が起こらないかどうかは保証できませんけど。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.