前言
在编写代码时,经常要注意的一件事情是代码的优化,一般在代码中,实例化对象是相对来说比较耗时、消耗性能的操作了,优化该操作的常用方法之一是使用对象池技术,本次以ActionScript3为例,分析一波对象池技术的使用。
new对象耗时分析
对基本的MovieClip进行实例化10000次所耗时间如下所示:
经过多次测试,该操作耗时约为40~50ms,这个时间感觉还可以接受的样子,下面再进行10000次加法与乘法操作来进行对比一下。
经过多次测试,该操作耗时约为2~3ms,大约为new MovieClip操作的1/20 ~ 1/15,这里需要注意的是new的是一个普通的MovieClip,因此没有涉及到过多的其它操作,在实际开发中,一般是new自己写好封装的类,在new的过程中会做一些初始化操作,因此会更加耗时。
对象池类的编写
主要是把实例化好的对象存入池中,在需要使用的时候直接从池中取出对象,不再去new新的对象。对象用完之后再将其放入池中,以便下一次的使用。代码如下所示:
1 | package Demo |
对象池耗时测试
从池中取对象好像如下所示:
可以看出,对于10000次操作,初始化池所耗时间约为40~50ms,之后从池中取10000个对象所需时间约为4~6ms,提高了约10倍左右。
再对100000次操作进行测试如下:
可以看出,初始化池所耗时间约为550~600ms,而取操作只用了约30ms,可见对象池对于性能得提升还是非常有帮助的。在需要实例化多个相同对象的时候,尽量使用对象池技术来提高性能。