Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
一个关于对象池的问题
Everness发起了问答2017-03-22
5
回复
623
浏览

siki老师,我现在做的一个小样例里面需求有将近100个对象物体要一直循环的出现和消失,所以我打算使用对象池来解决这个问题。

我需要您帮我看下我的选择的解决方法是否合理,有没有更好的解决途径。

我现在使用了Stack这种数据结构,原因是我看到这种类型的查找和增加的耗费时间都是1,而ArrayList这种数据结构除了查找、增加和删除都是耗费时间为n以外,还要涉及到装箱和拆箱,所以对性能的耗费很大。

不过我现在目前在网上看到的池技术基本都是使用的List和ArrayList,用这两种配合字典来做。不过我这里因为只有一种物件,所以不需要字典,但是在存储对象所使用的数据结构方面就不知道如何取舍了。

所有回复
  • siki 2017-03-22

    使用stack和list都可以,没有什么影响两个都可以

    还有就是装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。  跟你使用List还是stack没关系

    • Everness 2017-03-23

      但是请问如果我使用ArrayList的话,当我把A类型存储进以后就会变为Object类型,而如果我需要从数组里取值的时候就需要进行强制类型转换了,如果频繁的进行强制类型转换不会对性能产生影响吗?因为我这100个物体的循环出现和消失估计要持续进行5个小时以上

      (1) 回复
    • Everness 2017-03-23

      我根据您的提示又查了查,现在我的理解是:装箱和拆箱好像跟强制类型转换是两回事?或者只是强制类型转换的一种特例。然后根据之前看你视频的堆和栈的部分我又分析了下,感觉这个引用类型之间的强制类型转换不会耗费额外的性能,只不过会伴随着类型转换失败的问题。请问下我的理解对吗?谢谢。

      (0) 回复
    • siki 2017-03-24

      回复 @ Everness: 装箱和拆箱好像跟强制类型转换是两回事 前置只存在于引用类型和值类型之间 强制类型转换是通用的,存在于值类型里面也存在于引用类型里面

      (0) 回复
    • siki 2017-03-24

      不会消耗性能,有可能转换失败,如果不是对应类型的话

      (0) 回复
    还有-1条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!