现在的位置: 首页 > 综合 > 正文

Flash 与性能实验笔记:对象池

2014年02月05日 ⁄ 综合 ⁄ 共 2605字 ⁄ 字号 评论关闭

  今天一个下午在和civet_Dr.M.进行讨论,讨论很多关于flash 性能方面的问题,这些讨论暂时看不到什么结果,也不能总结出一套很完整的方案。不过flash和内存之间的使用是一个很重要议题。其中我们讨论了一个对象池的问题。在java当中有线程池的概念,其中原理跟对象池是差不多的。我们知道当我们创建对象时候,就需要向内存申请空间,这部分是必须的开销,当我们不需要对象的时候,就需要把他相关的引用和监听都清除掉,确保对象完全被安全释放掉。但是在这两个过程当中,创建和销毁会给虚拟机带来很多工作。当你不断创建,同时在某一条件下进行销毁。这两个过程,带来额外的开销。对效率带了一些的影响。为了减少这些操作。civet_Dr.M. 我的一个网友,他的指导思想如下

 

    ivet_Dr.M. 19:39:56
1. 要实例的时候从池里拿
2. 不用的实现丢回池里
3. 池里的不够用就new一些

 

 我觉得最基本就这些原则而已
civet_Dr.M. 19:40:14
2. 不使用的实例丢回池里

 

 

根据他的方法,创建对象是需要的,但是当我们删除对象的时候,有时候可以对对象进行一些特别的处理,重用这些对象,对效率会带来一定的提升。

 

关于对象池的使用,可以到这里观看ivet_Dr.M. 演示的一部分使用。 

http://wonderfl.net/c/9ESp

 

参考他的写法:也尝试制作一个。对象池使用在创作粒子特效的时候尤为重要,因为粒子效果会产生很多粒子数目,这些数目也不是一个小数目,如果创建太多对象必然导致开销很大,对已经产生的对象进行回收处理,这未尝不是一个好事。当中对象池使用还有很多提出的观点会值得去探讨。

 

 

 

下面的代码为:创建一系列的对象进行匀速运动。其中

var ball:Ball=getClass(); 在这里用法是很有趣的。不过这个粒子数目并不是很多。故此如果更多达到一定的情况的时候,需要使用位图进行优化。这个也是一个猜想。至于可行性如何?值得思考

 

抱歉!评论已关闭.