守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 835|回复: 0

[ActionScript] 一个方法告诉你as3的removeChild性能有多烂

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51690
    钢镚
    1422

    开源英雄守望者

    发表于 2015-5-29 09:31:51 | 显示全部楼层 |阅读模式
    本帖最后由 破晓 于 2015-5-29 09:33 编辑

    其实as3这个坑我早就踩过,不过那时没太注意,最近把项目的removeChild干掉换成了visible=false,发现效率质的提升……

    先贴一下代码吧


    1. private function testRemoveChild():void
    2.         {
    3.             var startTime:int = getTimer();
    4.             var count:int = 9999;
    5.             for (var i:int = 0; i < count; i++)
    6.             {
    7.                 var sp:Sprite = new Sprite();
    8.                 addChild(sp);
    9.             }
    10.             
    11.             trace("创建对象计算用时",getTimer()-startTime,"毫秒");
    12.             
    13.             startTime = getTimer();
    14.             while(this.numChildren)
    15.                 this.removeChildAt(this.numChildren-1);;
    16. //            while(this.numChildren)
    17. //                this.removeChildAt(0);
    18.             
    19.             trace("移除对象计算用时",getTimer()-startTime,"毫秒");
    20.         }
    复制代码
    输出创建对象计算用时 95 毫秒
    移除对象计算用时 4317 毫秒

    这个测试很简单,不过却看出一点,如果场景上有对象进进出出的话……光removeChild就吃掉了一截cpu。
    adobe这吭一直到现在都没填好,也不怪苹果说它懒了。

    为了解决removeChild吃性能的问题,我用了visible=false+对象池代管理来解决。
    发现fps确实提高了,但是真正的解决还需要一个条件就是flash player10.3…… 上一张论坛里找到一帖子,原话是这样的"话说 AS3 中,在舞台外的某显示对象的 visible 设为 false,之后其是否还会被重绘的问题,发现有不少兄弟还搞不太清。

      故在此做下说明:Flash Player 10.3 以前的版本仍然会重绘,10.3 以后的版本就不会再被重绘了。请大家注意!"

    最后我总结一个提高性能的方案,用LRU对象池+visible=false管理,完美提高运行效率。



    本文来自:http://www.cnblogs.com/pelephone/p/as3-removeChild.html

    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2019-8-18 13:08 , Processed in 0.036019 second(s), 31 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表