什么表现更好string :: + =或sstream ::<<

时间:2013-10-31 09:11:25

标签: c++

在c ++ stl库的上下文中,执行更好的string :: + =或sstream ::<<还是取决于其他什么?

编辑: 它取决于我们追加的数据大小吗?

3 个答案:

答案 0 :(得分:4)

它取决于许多各种参数,主要参数是这些运算符和编译器本身的实现。

在特定版本的编译器中进行简单测试可能是一个天真的观察。例如,只需将短字符串10,000,000次添加到stringistringstream并测量时间here即可。它显示+=<<更快。

time (ms):534.02   // For +=
time (ms):927.578  // For <<

在您的实际应用程序中,您应该使用+=,如果您怀疑它的速度很慢而且会损害您的性能,那么请测试另一个。{1}}。分析是关键字。

答案 1 :(得分:0)

除了字符串+ =推荐之外,我还要补充一点,如果你附加普通字符*并知道它的长度,你应该使用string.append(data *,length)方法,这将节省内部长度计算。 混合C / C ++代码的示例 而不是

  char temp[256];
  sprintf(temp, <some insane pattern>, <some valuable data>,...);
  str += temp;

你应该使用

  char temp[256];
  const int length = sprintf(temp, <some insane pattern>, <some valuable data>,...);
  str.apeend(temp, length);

答案 2 :(得分:-3)

编辑: 建议一般使用string :: + =和sstream ::&lt;&lt;当你知道你的追加字符串是巨大的。