次の 2 つのコード スニペットをテストしたところ、コード スニペット A がコード スニペット B よりも効率的であることがわかりました。str()
コピー操作はありますが、rdbuf()
ありません。はstr("")
よりも高価ですstr()
か?
コード スニペット A:
ofstream out("foo.txt");
stringstream ss;
for(int i = 0; i < 300000; i++) {
// append long text to ss
out<<ss.str();
ss.seekp(ios_base::beg);
}
out.close();
コード スニペット B:
ofstream out("foo.txt");
stringstream ss;
for(int i = 0; i < 300000; i++) {
// append long text to ss
out<<ss.rdbuf();
ss.str("");
}
out.close();