首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么能更好地执行string::+=或sstream::<<

什么能更好地执行string::+=或sstream::<<
EN

Stack Overflow用户
提问于 2013-10-31 09:11:25
回答 3查看 155关注 0票数 2

在c++ stl库的上下文中,有什么性能更好的string::+=或sstream::<<,或者取决于其他什么?

编辑:它是否取决于我们所附加的数据的大小?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-31 09:22:54

编辑:当您知道附加字符串很大时,建议一般使用string::+=和sstream::<<。

票数 -3
EN

Stack Overflow用户

发布于 2013-10-31 09:14:32

它依赖于多种参数,主要参数是这些操作符的实现和编译器本身。

在编译器的特定版本中进行一个简单的测试可能是一个天真的观察。例如,简单地向stringistringstream添加一个短字符串10,000,000次,并测量时间是这里。它表明+=<<更快。

代码语言:javascript
复制
time (ms):534.02   // For +=
time (ms):927.578  // For <<

在您的实际应用程序中,您应该使用+=,如果您怀疑它很慢,并且破坏了您的性能,那么应该测试另一个。分析是关键字。

票数 4
EN

Stack Overflow用户

发布于 2013-10-31 09:31:20

此外,对于string+=建议,我还要补充一点,如果您附加了普通字符*并知道它的长度,您应该使用string.append(data*,length)方法,这将节省您的内部长度计算。混合C/C++代码示例

代码语言:javascript
复制
  char temp[256];
  sprintf(temp, <some insane pattern>, <some valuable data>,...);
  str += temp;

你应该使用

代码语言:javascript
复制
  char temp[256];
  const int length = sprintf(temp, <some insane pattern>, <some valuable data>,...);
  str.apeend(temp, length);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19702360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档