|
|
发表于 2007-1-25 20:47:00
|
显示全部楼层
Re: Re:3000个粒子就跑不动了 这正常吗?
千里马肝: Re:3000个粒子就跑不动了 这正常吗?
>竟然是太大的Vector遍历速度的问题。申请了32000个顶点空间,每个64字节,没想到用下标引用起来这么费劲...
被马肝误解真是让人伤心啊
我怎么会蠢到用list去保存数据呢?用list是用来保存粒子的指针的.至于数据嘛你都已经说完了.我想真正懂数据结构的人都不会直接拿那些静态数组里的数据来处理逻辑的,更何况是量比较大的情况.
我很久以前测试过,一个是直接用数组的下标便历,一个是用指针便历,指针的速度要快好几倍,而且用下标从1->1m便历10变,比从1->100m便历一便要快很多,这说明什么问题?
所以我养成习惯了,尽量不开特大数组,即使开了,我也会尽量避免用下标便历.
最关键的是,粒子系统粒子的存储顺序一般来说是不重要的,甚至很多情况下不需要排序,也不需要定位查找,很多情况下,只是在渲染前根据他的生命周期更新一下而已,需要做的仅仅是便历每个一个粒子,用list便历,我不管数据量是多大,便历效率始终是O(n).
很多人不喜欢用list,认为是鸡肋,包括我现在的上级,但在我眼里,stl里每样都有他存在的理由.
从上所述,用list+dynamic VB是最正确的. |
|