3

次の 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();
4

2 に答える 2