- 浏览: 830733 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (379)
- struts (5)
- hibernate (16)
- spring (16)
- ssh (20)
- MySQL (16)
- 数据库脚本 (2)
- DownLoad (1)
- GAE (5)
- Java (103)
- LoadRunner (2)
- VF (1)
- 学习资料 (24)
- 软件使用 (21)
- 通信类 (4)
- 生活 (3)
- J2ME (1)
- 心理学 (1)
- Linux (26)
- Android (3)
- Oracle (1)
- 面向对象概念&面试准备 (11)
- ExtJs (2)
- Google Map (1)
- Flex (47)
- 算法研究 (1)
- share (20)
- python (1)
- MongoDB (7)
- centos6 (13)
- C++ (8)
- DB2 (3)
- C# (1)
- 代码片段 (24)
- Lucene (2)
- php (1)
- NodeJS (1)
- Express (1)
最新评论
-
shua1991:
已阅,我表示同意。
Eclipse统计代码行数 -
nakedou:
写的不错,挺详细的
在CentOS中使用 yum 安装MongoDB及服务器端配置 -
sjp524617477:
好方法
Eclipse统计代码行数 -
simpletrc:
<script>ale ...
Java写到.txt文件,如何实现换行 -
csdn_zuoqiang:
Apache Ftp Server,目前是1.0.4,非常好的 ...
Apache FtpServer在64位系统下服务不能启动解决方法
规则 # 1: 打扫代码
一般来说,保持代码清洁是一个很好的习惯。这可并不仅是写出的代码很整齐并具有良好可读性的,而且还得不留任何累赘,比如:内存泄露,cpu超载等,这些必须要避免。我们需要的是可以被GC(垃圾回收)回收的对象
。
1) 管理你的事件
监听
器
-包含两部分。首先,你必须养成随时删除无用的事件监听器的良好习惯,因为这些监听器带来的对象引用会阻止垃圾回收器从而造成内存泄露,而且它们还很难跟
踪并且影响程序的性能。当然,你可以使用弱引用事件监听器以降低内存泄露的危险,但是你最好还是在它们没用的时候把它们删掉。其次,删除事件监听器失败会
引发性能问题,因为,尽管你有十个不愿意,但是相应的事件处理器可能已经开始工作了。比如,你在子组件
里分发了一个事件,父对象中存在处理这个事件的处理器,然后处理永远不会到来的事件(监听器被删除)。如果你不希望这种事发生,就得及时清理事件处理器;让它们只处理特定的事件类型,当你不用时就删除它们。
2) 卸载加载
器
- 每次你使用加载器(图像,SWFLoader等等)加载对象后,最好调用
unloadAndStop()方法来卸载加载的内容,并让GC来回收这些垃圾。这样会大大节省系统资源和cpu的使用。我甚至每次加载静态图片
文件
时也会这么做,以便防止内存占用过大。
3) 清除东西
-
我发现在自定义组件,数据管理和视图中使用“dispose()”方法非常有效,它可以用来清除对象资源。虽然在你使用完一个对象时,你必须明确的调用
dispose()方法,但是这个方法却可以处理所有需要清除的对象以便释放资源。比如,停止计时器,移除事件监听器,卸载加载器对象,设置变量为空等
等。简单点说,它可以去掉任何可能导致内存泄露或cpu超载的东西。当然,dispose()本身也需要消耗cpu,但是请相信我,这和耗费时间,占用计
算机资源,跟踪内存泄露和影响性能相比,简直微乎其微。
Rule #2: I如果你不必要做某些事,那就别做
另一个规则就是:如果你不必要做某些事,那就别做。当然这并不代表着你“不用上班”,“不用刷牙”,你当然得干这些事。我的意思是如果没必要的话,就不要做一些影响计算机性能和增加资源开销的事。
4) 处理
Collection -我总是看到一些东西,我一看到这些东西就有一种想立刻改变它们的冲动。Collection(ArrayCollection,XML
ListCollection,等等)是一种包装了原始集合类(比如array或xmllist
)的帮助类,它们使开发
人员操作原始集合更加方便和简单,但是同时它们也会消耗大量cpu资源。绑定collection的原因是因为每次你添加,移除,更新时,事件就会被分发出去。每次你刷新collection时,它们也会分发事件。
秘
诀1,你必须考虑collection产生的事件。如果你遍历一个集合,然后更新了10000项数据,那么10000个事件就会被分发出去。这会大大影响
性能,还有可能搞死程序的UI。如果集合里的某些事件不必要分发出去,你可以使用disableAutoUpdate()方法来终止事件的分发,需要时再
用enableAutoUpdate()方法来还原。
秘诀2,如果你没必要使用collection,那就别用。如果你只是简单的遍历10000项数据,那么用array就可以了。
在
第3个秘诀是关于使用过滤方法过滤collection。如果在collection中使用过滤方法,那么你就不需要在每次添加新数据时都调用
refresh()方法了。当然这也会在你最不希望的地方产生性能问题。举个例子,你把一个datagrid和一个collection绑定,然后更新这
个集合。如果集合中有过滤器,当你调用additem方法时会被自动过滤,如果你在添加数据后调用refresh()方法,则会导致datagrid中的
数据无效,因为整个datagrid都被重新拿出来校验了一遍。这会在一定程度上影响程序的性能。
5)
使用延时实例化
- 默认情况下,Flex的所有导航容器(tab nav, accordion, viewstack等等)只会在需要时才创建子容器。这会使程序减少很多冗余的容器,从而提升程序的性能。如果你不小心的话,改变生成规则会带来很多问题。
当创建自定义组件时,你要拥有一种延时实例化的意识。不要在构造函数中创建子对象,而是要覆盖createChildren()方法,然后在这个方法里创建它们。这样,你的组建就会遵循延时实例化规则,从而较少性能的降低。
6) 对象重用和新对象
- 我以前写过这个话题
,但是我在这里还是要重申一遍,重用已经存在的对象比创建新对象要减少很多的开销。你可以参考这个数据虚拟化
。
7)
如果没有任何改变
,就不要/删除/重新校验对象
如果你创建了一个自定义组件,然后有人改变了一个属性(通过getter/setter),如果传入的值没有改变的化,就不要校验组件属性了。因为这可能导致组件重新走一遍校验流程。有改变时再校验。这有个例子:
public function set myProperty( value : Number ) : void
{
if ( _myProperty != value )
{
_myProperty = value;
propertiesChanged = true;
invalidateProperties();
dispatchEvent( new Event( "change" ) );
}
}
Rule #3: 合理地利用语言
AS语言包含很多有关性能的特性,请使用。
8)
动态/泛型 vs 类型对象
- 动态和泛型对象都有自己的位置。它们很灵活,可以被修改成任何属性,能在很多情况下使用。话虽如此,但是如果你不需要使用泛型的特性,那么最好还是定义成强类型对象。因为使用强类型正是AS速度很快的原因。用强类型定义的对象显然比泛型要快。
9) 在适当的情况下使用常量
- 如果你有一个不变的值,但是却需要随时引用,那就用常量吧。常量的速度很快,而且开销很小。
10) 使用静态成员
- 静态属性和函数不需要实例化就能访问和调用,因此能够通过类来直接访问它们,而且不需要占用内存空间来实例化对象。工具函数,或者不需要实例化属性的函数都可以被定义为静态函数。
发表评论
-
Flex Spark皮肤定制
2011-08-03 23:18 1013转自 http://www.cnblogs.com/twave ... -
自定义ItemRenderer常遇到的警告unable to bind to property的解决办法
2011-08-03 22:02 1237<?xml version="1.0&q ... -
Flash Builder 代码格式化工具 Flex Formatter 下载地址
2011-08-03 17:09 1262http://sourceforge.net/projects ... -
Flex性能优化常用手法总结
2011-07-29 09:19 838随着Flex越来越多的被人们所熟知,越来越多的互联网也开始了R ... -
关于Flex4,textArea控件的htmlText属性被和谐。。。
2011-06-15 11:18 4825最近做的项目是网页游戏的聊天系统和好友系统,以前喜欢用fl ... -
修改flash builder注释里的@author
2011-06-15 00:18 2090在flash builder里,按Ctrl+Shift+D ... -
AS3中String转换成Boolean
2011-05-27 12:07 3438AS3中String转换成Boolean的规则和Java不一样 ... -
用 File.applicationDerectoryPath.resolv("text.txt")会报SecuriyError错误!
2011-05-26 16:26 1024用 File.applicationDerectoryPath ... -
关于actionscript3.0 中 ResourceBundle 绑定国际化资源文件
2011-04-02 20:17 1322一个简单的示例项目:mpcs LangUtil.a ... -
AIR2.0新特性
2011-03-24 10:29 1237按照类型用默认的程序打开文件 在AIR2.0中,你可以使 ... -
FlashSocket通信安全策略一点心得
2011-03-06 10:29 13671、问题描述 将flash发布为html格式 ... -
理解Loader、Bitmap和BitmapData对象之间的关系
2011-02-15 18:58 4090在Loader对象实例中,被 ... -
AS3 dynamic class
2011-02-13 14:58 2977动态类 “动态”类定义在运行时可通过添加/ 更改属性和方法来 ... -
Array的SortOn排序
2011-01-29 19:53 4061sortOn () 方法 AS3 func ... -
通过Http post方式发送json,然后获取返回的json
2011-01-24 20:36 14182思路:将发送的json转换为xml 示例代码 ... -
在JPanel中,如何将.png格式的图片设置为背景?
2011-01-18 20:14 1721yourJPanel.setBackgroundDecorat ... -
Flash中所支持的Html标签
2011-01-18 19:23 930Flash中所支持的Html标签 <a& ... -
AsWing JList
2011-01-18 14:24 2505JList类似于flex的dataGroup控件,可以自己定义 ... -
AS3.0的Socket通讯发送固定字符串(指定编码)
2011-01-12 17:08 1776flash客户端与服务端传输中文出现乱码的问题C++服务端每次 ... -
flex谷歌地图中国各级地区详细信息实例
2011-01-07 16:35 2520<?xml version="1.0" ...
相关推荐
Flex应用程序性能改善技巧,帮你最大限度提高运行速率
Flex 应用程序性能: 改善客户端应用程序和服务器性能的技巧与技术 <br>这是macromedia的白皮书,里面包含了很多不错的建议!强烈推荐^_^
学习Flex.flex源程序,很好的啊。
sfapi 可以expose flex应用程序的控件,以便测试程序通过执行js方法调用而操作flex界面控件
flex 图片浏览\放大\缩小,
小程序源码 FlexLayout布局 (代码+截图)小程序源码 FlexLayout布局 (代码+截图)小程序源码 FlexLayout布局 (代码+截图)小程序源码 FlexLayout布局 (代码+截图)小程序源码 FlexLayout布局 (代码+截图)小程序源码 Flex...
内容简介 《Flex与ActionScript 3程序开发》主体分为5个部分,分别从基础知识、视觉设计、组件高级技法、性能优化和Flex通信5个主要方面进行Flex知识的讲解。 《Flex与ActionScript 3程序开发》由易到难、由浅人深、...
微信小程序 FlexLayout布局 (源码)微信小程序 FlexLayout布局 (源码)微信小程序 FlexLayout布局 (源码)微信小程序 FlexLayout布局 (源码)微信小程序 FlexLayout布局 (源码)微信小程序 FlexLayout布局 (源码)微信小...
这是一本入门级的Flex电子书,适合入门的朋友看!
避免Flex RSL重复load 提高module加载性能的swc
基于flex性能测试的一些简单流程描述和测试方法
本书主体分为5个部分,分别从基础知识、视觉设计、组件高级技法、性能优化和Flex通信5个主要方面进行Flex知识的讲解。 本书由易到难、由浅人深、循序渐进地介绍了Flex与ActionScript3程序开发的一般步骤与常用的...
微信小程序flex布局demo
flex打分程序(管理系统)flex打分程序(管理系统)flex打分程序(管理系统)flex打分程序(管理系统)flex打分程序(管理系统)flex打分程序(管理系统)flex打分程序(管理系统)flex打分程序(管理系统)flex打分...
Flex与ActionScript3程序开发》一书由易到难、由浅人深、循序渐进地介绍了Flex与ActionScript3程序开发的一般步骤与常用的程序技巧,内容通俗易懂,使用大量实例贯穿全书,力求以实战的形式让读者快速掌握知识点。...
微信小程序,Flex布局示例源代码,包括横向布局,纵向布局,基本涵盖了Flex布局的知识点,有相关的页面布局需求,可以直接拿来使用。
selenium对flex程序的自动化测试.docx
flex聊天程序客户端flex聊天程序客户端flex聊天程序客户端
收集的10几款flex应用皮肤,可以改变自己的flex程序外观
目录: Flex基础篇 1.走进Flex世界 2.Flex基础知识 3.语言基础 4.数据基础 5.事件驱动 ... 1.Flex皮肤设计 2.... 3.Flex与Flash无缝衔接 4....性能优化篇 Flex通信篇 与js通信 与php通信 与j2ee通信