注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Flex 技术博客

醉里挑灯看剑,梦回吹角连营

 
 
 

日志

 
 

如何改善你的Flex系统性能(Performance)  

2007-09-24 16:31:02|  分类: Flex 应用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

对于Flex性能我想是很多真正打算用它的人最关心的问题,也是我用了这么久之后体会比较深刻的问题,目前我做过的系统性能也是一个大问题,在这里我总结了一些在技术上提高性能的方法。

  1. 避免容器的深层嵌套(因为每个容器都会对其子容器进行计算和调整,一般建议HBox,VBox最好不要超过3层,但对于复杂系统这个很难避免)
  2. 对于容器和空间的位置和尺寸尽量采用绝对坐标和硬编码。(减少Flash Player深层次的嵌套计算)
  3. 合理恰当的使用Grid容器,对于能用普通容器如HBox,VBox实现的尽量不要采用Grid(Grid嵌套层次深)
  4. 避免使用重复、冗余的容器嵌套,如:
     1) 在Panel,Application中添加一层VBox,Panel,Application本来就是继承于VBox的,添加无谓的VBox只能降低你系统的性能。
     2) 对于自定义的容器减少重复多余的父容器,比如:
      <mx:VBox backgroundColor=" #FFCCCC" borderStyle=" solid">
       <myComponent xmlns=" *" />
      </mx:VBox>
     你完全可以采用下面的写法,对于myComponents可能它本身就是VBox
      <myComponent xmlns=" *" backgroundColor=" #FFCCCC" borderStyle="solid" />
  5. 延迟实例化导航类容器(Deferred Instantiation Navigator Containers)
       如ViewStack, Accordion, TabNavigator等,本身就提供了延迟实例化的功能,你只需要修改其creationPolicy='auto'即可,它将只实例化第一个要显示的子控件,其余的将在需要的时候实例化。
  6. 对于flex的效果(Effects)要做到尽量平滑(Smoothly),比如延长它的持续时间(duration),避免使用bmp格式的图片作背景。
  7. 对于DataGrid的复杂ItemRenderer,尽量用Canvas而不是VBox or HBox,这个和Flex 1.5中是不同的。
  8. 如果DataGrid的ItemRenderer是ComboBox等,尽量用ItemEditor而不是ItemRenderer,只有当选中的cell才会显示其Renderer(避免一次性把所有的cell Renderer都画出来)
  9. 记得随时Remove 没有用的Listener或采用弱引用,这个我在事件机制中提到过(URL...); null不用的变量和数组。
  10. 对于大批量的数据采用需要的时候去取或者分页
  11. 提前声明频繁使用的变量,如:
    var l:int=list.length;
    var w:int = stage.stageWidth;
    for(var i : int=0; i < l; i++){
     list[i].x = w -100;
    }
    这样也能提高Flex的性能,可能很多人都会不屑,但至少对于Flex来讲它能减少不必要的计算,改善性能,我想这个编程习惯问题要改还真是不容易,至少我写了1年多直到最近才注意到这个问题。
  12. 另外和代码组织有关的建议,如:
     1) 系统性的常量写在一个常量类里头并用const关键字,一些ItemRenderer代码尽量独立成一个文件而不是直接到处都写
     2) 不要在界面元素中引用一大串的parent.parent.parent...,一旦界面重新组织将给你带来很大麻烦。如果你用Cairngorm框架,那么就应该用ViewHelper,尽量的松耦合你的代码。
  13. 修改 production-mode 属性为true,2.01在文件flex-webtier-config.xml中。它一般是产品发布的时候要设置的,你可以理解为c++的 Release和Debug版本之间的差异。
  14. 如果你用FDS,那么尽量用Remote Object 而不是Http Service or Web Service,因为前者的效率最高
  15. 对你的系统进行压力测试,Adobe有一个测试工具,叫Flex Stress Testing Framework(rul:http://labs.adobe.com/wiki/index.php/Flex_Stress_Testing_Framework).它能提供对RPC中的RTMP, AMF,HTTP测试,一般的商业测试软件不支持前两者的测试,该软件完全免费,你可以到Adobe官网上下(URL: http://download.macromedia.com/pub/labs/flexstress/flex_stressfw_p2_060407.zip)

如果这篇文章对你有帮助那就是对我总结的肯定。如果你有补充的,那也不要犹豫发表你的意见。

  评论这张
 
阅读(2361)| 评论(5)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017