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

(207评价)
优惠后 ¥1899.00优惠前 ¥2499.00 双十一全年最大力度限时优惠
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

一个关于对象池的问题
Everness发起了问答2017-03-22
5
回复
820
浏览

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条回复,点击查看
    你还没有登录,请先登录或注册!
发表回复
你还没有登录,请先 登录或 注册!