慎用string.resize()
来源:互联网 发布:沃伦夫妇的真实性 知乎 编辑:程序博客网 时间:2024/06/03 20:41
string作为stl模块库的一部分,应用非常广泛,但是用的不好的话,会导致性能低下。
可能很多人(包括我之前)认为resize操作仅仅只是改变string对象的内部偏移量,
实际的情况是:除了改变内部偏移量之外,resize可能伴随内存重分配, 而且还会作填充操作,见帮助文档:
不适当使用resize可能会严重影响性能。见如下代码(修改自某底层库):
运行结果对比:
结果表明:先resize,然后memcpy的方式比直接assign的方式慢了有600ms左右。原因:resize+memcpy涉及到2次内存填充。assign则只有一次。
总结:在使用stl或者其他api时,要充分了解它的功能跟性能方面的影响。
0 0
- 慎用string.resize()
- c++ string resize
- string,reverse,resize
- String.getBytes()慎用
- 慎用String.valueOf()
- string.reserve 与 string.resize的区别
- string.reserve 与 string.resize的区别
- string.reserve 与 string.resize的区别
- 子线程中慎用CString, std::string
- 使用STL string慎用memcpy和void*
- resize
- resize
- 慎用!
- 慎用""
- string的size/length、resize/reverse和capacity
- std::string的reserve()和resize()函数的区别
- c++ string中的reserve()和resize()
- java慎用String.substring(int start, int end)
- gcc实用扩展总结
- 大数高精度运算(模板)
- Junit使用教程(一)
- DBlink
- 最大堆和最小堆
- 慎用string.resize()
- 弹出输入文本框上弹的动画效果
- Sqlite数据库约束条件详解
- Junit使用教程(二)
- hibernate通过数据库表反向生成实体类
- 供热供热图尔认同
- android 如何实现重启、关机
- 卡了一年的联通IPTV,能查的都查了,最后发现是电源的问题
- cocos2d-x android 添加新场景报错: undefined reference to `vtable for XXX'