Flex中添加大量组件时内存占用问题
2015-09-18 10:33
246 查看
前期在使用FLEX做一个设计器时考虑到了内存和效率问题,由于前期考虑到用户交互,还是使用了Group代替了Sprite作为设计器中组建的跟节点,但设计的图纸越来越大的时候,内存占用和效率的问题越来越突出,近来,一直想改造一下,所以做了一个实验,发现使用Spite和Group的区别有这么的大。
下面是实验对比结果:(ThinkPad T410i)
可以很容易看出,使用Group的内存占用快要达到3倍,创建时间有6倍。
需要解释的是一个Sprite组建不能直接添加到Flex的组建中,需要包一个UIComponent,如果使用Sprite时,所有组建都可以添加到一个UIComponent中,而是用Group时,每一个组件都需要使用一个UIComponent包起来,才可以添加。组建的绘制在Sprite上执行。
结论:如果需要大量组件的创建,请使用Sprite作为组件的根节点,并把所有的组建通过一个UIComponent包起来,这样在内存占用和创建时间就可以优化很多,尤其是组建数量很多时。不过,如果你的组建数目超过1万个时,需要考虑其他优化方法,不要试图全部加载到界面。
下面是实验对比结果:(ThinkPad T410i)
组件节点根对象 | 节点数量 | 内存占用(MB) | 创建时间(毫秒) |
---|---|---|---|
Group | 100 | 2.7 | 496 |
10000 | 105 | 61955 | |
Sprite | 100 | 2 | 206 |
10000 | 35 | 10198 |
需要解释的是一个Sprite组建不能直接添加到Flex的组建中,需要包一个UIComponent,如果使用Sprite时,所有组建都可以添加到一个UIComponent中,而是用Group时,每一个组件都需要使用一个UIComponent包起来,才可以添加。组建的绘制在Sprite上执行。
结论:如果需要大量组件的创建,请使用Sprite作为组件的根节点,并把所有的组建通过一个UIComponent包起来,这样在内存占用和创建时间就可以优化很多,尤其是组建数量很多时。不过,如果你的组建数目超过1万个时,需要考虑其他优化方法,不要试图全部加载到界面。
相关文章推荐
- 关于.Net使用企业库访问MySql数据库
- 面试题 30
- 多态与重载的区别
- H5学习之旅-H5的块标签的使用(9)
- IDEA的配置JDK,Tomcat,Maven
- H5学习之旅-H5的块标签的使用(9)
- H5学习之旅-H5的块标签的使用(9)
- 例题6-9 天平 UVa 839 递归
- H5学习之旅-H5的块标签的使用(9)
- SSH 错误解决案例1:Read from socket failed: Connection reset by peer
- HDU 5442——Favorite Donut——————【最大表示法+kmp | 后缀数组】
- 多目标进化算法
- 9月15日全球域名商(国际域名)解析新增量TOP20
- Ubuntu 15.10 (Wily Werewolf) 将会是最后一个“无聊”的版本更新
- QT int转16进制,并补0
- C++封装、继承、多态
- 关于myecilpse debug模式启动报错 transport、 error 200问题
- 模板整理
- C/C++__typedef用法
- JQuery自定义动画animate方法