返回信息流stl过于臃肿和复杂一直受人诟病。
但是我觉得vector算是stl里面最无可挑剔的了,大部分情景下,用stl写出的程序有性能问题其实一般都是出在程序员本身没有正确使用。
楼主也出过一些傻逼问题,最近对项目进行优化的时候积累了一点经验。个人觉得还算简单实用。
如果有疑惑或者更好的改进方法,欢迎交流。
vector使用的简单优化技巧
短数组优化之LocalVector
这是一条镜像帖。来源:北邮人论坛 / cpp / #80121同步于 2014/6/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于c++ stl里面的vector的使用和优化
bswgd
2014/6/5镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
刨除人为因素,stl本身不坑爹,坑爹的是某些平台库对STL的实现...(又忍不住语地炮了...[ema21])
【 在 bswgd 的大作中提到: 】
: stl过于臃肿和复杂一直受人诟病。
: 但是我觉得vector算是stl里面最无可挑剔的了,大部分情景下,用stl写出的程序有性能问题其实一般都是出在程序员本身没有正确使用。
: 楼主也出过一些傻逼问题,最近对项目进行优化的时候积累了一点经验。个人觉得还算简单实用。
: ...................
be ware of that allocate massive memory on stack will lead to undefined behavior. A memory pool will do the same trick with almost same performance.
来自「北邮人论坛手机版」
【 在 aquamarine 的大作中提到: 】
: be ware of that allocate massive memory on stack will lead to undefined behavior. A memory pool will do the same trick with almost same performance.
: 来自「北邮人论坛手机版」
1. be ware of that allocate massive memory on stack will lead to undefined behavior.
massive应该不成立。记得在libc++的实现里面,string也是在栈定义了缓存区来优化短字符串。
2. A memory pool will do the same trick with almost same performance.
确实,但是短数组还是能在内存池的优化的基础上提高性能的。
1. 大堆!
2. 生命周期!
【 在 bswgd 的大作中提到: 】
:
: 1. be ware of that allocate massive memory on stack will lead to undefined behavior.
: massive应该不成立。记得在libc++的实现里面,string也是在栈定义了缓存区来优化短字符串。
: ...................
主要是说得你回复的那个问题。
1. 本身提到massive memory on stack这种词就是undefined。对于内存管理来说,就是要依据具体操作系统类型、编译器设置来说,抛开单独说massive,多大叫massive呢?如果说栈放不下的叫massive,那本身这个问题就不属于编程语言优化的问题,你开辟的栈里都放不下了,再怎么优化代码一样还是放不下,那就应该放到堆里。
2. 用内存池一个很大问题在维护的周期(什么时候回收内存池自身,记得之前有一个帖就是讨论这个相关的问题),另外即便是内存池,同样会产生碎片!
【 在 bswgd 的大作中提到: 】
:
: 不太明白你说的意思,能否说得具体点?
【 在 tonyjansan 的大作中提到: 】
: 主要是说得你回复的那个问题。
: 1. 本身提到massive memory on stack这种词就是undefined。对于内存管理来说,就是要依据具体操作系统类型、编译器设置来说,抛开单独说massive,多大叫massive呢?如果说栈放不下的叫massive,那本身这个问题就不属于编程语言优化的问题,你开辟的栈里都放不下了,再怎么优化代码一样还是放不下,那就应该放到堆里。
: 2. 用内存池一个很大问题在维护的周期(什么时候回收内存池自身,记得之前有一个帖就是讨论这个相关的问题),另外即便是内存池
,同样会产生碎片!
: ...................
好吧,那你应该点回复他。。。你点回复我,我被你搞的一头雾水。