BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #80121同步于 2014/6/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

关于c++ stl里面的vector的使用和优化

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