Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
<ul><li>-如何减少内存中的对象 </li></ul>Flex 开发大型应用的效率问题
Flex 的效率问题在哪?
itemRenderer
LineSeriesItem <ul><li>图表中每一个绘图单元都是一个 itemRenderer 对象 </li></ul><ul><li>本图一共 20 个 LineSeriesItem </li></ul><ul><li>那一个拥有 5...
<ul><li>一个复杂的图表可以包含几百几千个对象。 </li></ul><ul><li>一个复杂的 DataGrid 表格也往往包含着几十几百个对象。 </li></ul><ul><li>那一个庞大的应用算下来将会包含多少个对象呢? </l...
Flex 的效率问题的根本原因在于 同时存在太多的对象
对象太多导致的问题 <ul><li>初始化耗时非常久 </li></ul><ul><li>内存占用很大 </li></ul><ul><li>虚拟机负担很重 </li></ul>
如何减少对象数量?
推迟实例化和模块化 <ul><li>如果应用中大部分功能每次运行都会使用到,建议将功能做成组件,默认不创建组件的实例,在使用到的时候才创建实例。 </li></ul><ul><li>如果每次运行只会使用其中部分功能,建议采用外部模块方式,编译成...
自定义组件 <ul><li>自定义组件的方式 </li></ul><ul><ul><li>创建基于 Sprite 或者 UIComponent 的组件 </li></ul></ul><ul><ul><li>在 graphics 上绘制界面 </...
尽快释放不再使用的对象 <ul><li>哪里创建哪里释放原则 </li></ul><ul><li>释放对象的方式为  *** = null; </li></ul><ul><li>释放从外部加载的对象要先 unloadAndStop </li><...
编程技巧 <ul><li>编程过程中要对对象的数量有概念,尽量使用产生对象数量最少的实现方式。例如:复杂的拼接字符串使用 ByteArray </li></ul><ul><li>重复使用的对象可以建立对象缓存,不要每次都创建新的 </li></ul>
不使用框架,最简化设计 <ul><li>如果应用很庞大,而且对效率要求不是太高,建议使用框架。可以方便管理和协同工作 </li></ul><ul><li>如果应用不是非常庞大,建议不要使用框架,那样会把简单的问题弄复杂 </li></ul><u...
讨论
Email&GTalk : MSN : QQ : [email_address] s [email_address] 343420 跟我联系  张建华
Upcoming SlideShare
Loading in …5
×

Flex开发大型应用的效率问题

2,056 views

Published on

  • Be the first to comment

  • Be the first to like this

Flex开发大型应用的效率问题

  1. 1. <ul><li>-如何减少内存中的对象 </li></ul>Flex 开发大型应用的效率问题
  2. 2. Flex 的效率问题在哪?
  3. 3. itemRenderer
  4. 4. LineSeriesItem <ul><li>图表中每一个绘图单元都是一个 itemRenderer 对象 </li></ul><ul><li>本图一共 20 个 LineSeriesItem </li></ul><ul><li>那一个拥有 5 个 Series 和 500 个数据的图表有多少个 itemRenderer 对象? </li></ul>DataGridItemRenderer <ul><li>表格中每一个格子都是一个 itemRenderer 对象(不可见的不算) </li></ul><ul><li>本图一共 60 个 DataGridItemRenderer 对象 </li></ul><ul><li>那一个拥有 10 列 20 行可见的表格有多少个 itemRenderer 对象? </li></ul>A B C D E 1 2 3 4 5 2 3 4 5 6 7 8 9 10
  5. 5. <ul><li>一个复杂的图表可以包含几百几千个对象。 </li></ul><ul><li>一个复杂的 DataGrid 表格也往往包含着几十几百个对象。 </li></ul><ul><li>那一个庞大的应用算下来将会包含多少个对象呢? </li></ul>
  6. 6. Flex 的效率问题的根本原因在于 同时存在太多的对象
  7. 7. 对象太多导致的问题 <ul><li>初始化耗时非常久 </li></ul><ul><li>内存占用很大 </li></ul><ul><li>虚拟机负担很重 </li></ul>
  8. 8. 如何减少对象数量?
  9. 9. 推迟实例化和模块化 <ul><li>如果应用中大部分功能每次运行都会使用到,建议将功能做成组件,默认不创建组件的实例,在使用到的时候才创建实例。 </li></ul><ul><li>如果每次运行只会使用其中部分功能,建议采用外部模块方式,编译成单独的 swf ,当需要使用时进行加载,然后再创建实例。 </li></ul>优点: 加快了第一次打开的速度,减少了一开始系统同时存在的对象数 缺点: 以后访问的时候需要加载外部模块或初始化对象,偶尔会卡一下
  10. 10. 自定义组件 <ul><li>自定义组件的方式 </li></ul><ul><ul><li>创建基于 Sprite 或者 UIComponent 的组件 </li></ul></ul><ul><ul><li>在 graphics 上绘制界面 </li></ul></ul><ul><ul><li>创建 TextField 显示文本 </li></ul></ul><ul><li>抛弃不必要的功能可以极大的减少对象数量,提高组件效率 </li></ul><ul><li>能实现一些系统组件未提供的功能 </li></ul>
  11. 11. 尽快释放不再使用的对象 <ul><li>哪里创建哪里释放原则 </li></ul><ul><li>释放对象的方式为 *** = null; </li></ul><ul><li>释放从外部加载的对象要先 unloadAndStop </li></ul><ul><li>必须清楚对象被谁引用,释放时要删除全部的引用才会有效 </li></ul><ul><li>这应该是一个优秀程序员必须具备的基本素质 </li></ul>
  12. 12. 编程技巧 <ul><li>编程过程中要对对象的数量有概念,尽量使用产生对象数量最少的实现方式。例如:复杂的拼接字符串使用 ByteArray </li></ul><ul><li>重复使用的对象可以建立对象缓存,不要每次都创建新的 </li></ul>
  13. 13. 不使用框架,最简化设计 <ul><li>如果应用很庞大,而且对效率要求不是太高,建议使用框架。可以方便管理和协同工作 </li></ul><ul><li>如果应用不是非常庞大,建议不要使用框架,那样会把简单的问题弄复杂 </li></ul><ul><li>如果对效率要求比较高,建议不要使用框架,那样会牺牲一些效率 </li></ul><ul><li>Flex 本身的机制就已经非常不错了,不要盲目崇拜框架和崇拜 MVC 。很多时候最简单的其实才是最好的。 </li></ul><ul><li>开发一个适合自己项目的简化框架也许是最佳解决方案 </li></ul>
  14. 14. 讨论
  15. 15. Email&GTalk : MSN : QQ : [email_address] s [email_address] 343420 跟我联系 张建华

×