在c++ stl库的上下文中,有什么性能更好的string::+=或sstream::<<,或者取决于其他什么?
编辑:它是否取决于我们所附加的数据的大小?
发布于 2013-10-31 09:22:54
编辑:当您知道附加字符串很大时,建议一般使用string::+=和sstream::<<。
发布于 2013-10-31 09:14:32
它依赖于多种参数,主要参数是这些操作符的实现和编译器本身。
在编译器的特定版本中进行一个简单的测试可能是一个天真的观察。例如,简单地向string或istringstream添加一个短字符串10,000,000次,并测量时间是这里。它表明+=比<<更快。
time (ms):534.02 // For +=
time (ms):927.578 // For <<在您的实际应用程序中,您应该使用+=,如果您怀疑它很慢,并且破坏了您的性能,那么应该测试另一个。分析是关键字。
发布于 2013-10-31 09:31:20
此外,对于string+=建议,我还要补充一点,如果您附加了普通字符*并知道它的长度,您应该使用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);https://stackoverflow.com/questions/19702360
复制相似问题