gpt4 book ai didi

C++ stringstream输出性能

转载 作者:太空狗 更新时间:2023-10-29 21:01:53 25 4
gpt4 key购买 nike

我测试了以下两个代码片段,发现代码片段 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();

最佳答案

可以检测到两个电位差:

out<<ss.str();将数据复制为 std::basic_string , 其中out<<ss.rdbuf();返回 std::basic_streambuf<CharT,Traits> 类型的指针

ss.str("");替换字符串流中的内容,其中 ss.seekp(ios_base::beg);只设置输出位置指示符

附言。

ss.str("")ss.str()是两种不同的操作。看: http://en.cppreference.com/w/cpp/io/basic_stringstream/str

关于C++ stringstream输出性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16965307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com