`
阅读更多
1、当创建一个数组的时候避免用new操作符用 var a:Array = [];而不用var a:Array = new Array();

2、传统的这样来简历数组的话代价是非常昂贵的:

var vanityCollection01 : Array = new Array();
var vanityCollection02 : Array = new Array();
var vanityCollection03 : Array = new Array();
var vanityCollection04 : Array = new Array();

3、快速的复制一个数组:

var copy : Array = sourceArray.concat();

4、设置一个数组的值是非常忙的:

employees.push( employee );
employees[2] = employee; 5、从一个数组中取得值的速度是设置一个数组值的两倍快:var employee : Employee = employees[2];

6、当不需要一个类的实例的时候尽量用静态的属性或方法:
StringUtils.trim( "text with space at end " );
Class definition:
package
{
     public final class StringUtils
         {
          public static function trim( s : String ) : String
          {
               var trimmed : String;
               // implementation...
               return trimmed;
           }
      }
}

7、在整个程序的生命周期中都不会改变的变量用const定义常量:
public const APPLICATION_PUBLISHER : String = "Company, Inc.";

8、当一个类不需要有之类的时候应该讲该类声明为final类型的:
public final class StringUtils

9、变量和方法的长度在As3中并不影响什么性能,但在别的语言中可能就有影响:
someCrazyLongMethodNameDoesntReallyImpactPerformanceTooMuch();

10、将语句写在一行上面并不会影响AS3程序的性能,但在别的语言中却有影响:
var i=0; j=10; k=200;

11、在内存占用上面if语句和switch语句并没有什么区别:
语句:
if ( condition )
{
     // handle condition
}
和语句:
switch ( condition )
{
     case "A":
         // logic to handle case A
     break;
     
     case "B":
         // logic to handle case B 
     break;
}
占用的内存是一样的
12、当你的程序处理分支较多的时候,你应该适当的排列他们出现的顺序,可以参照以下的方式进行:
if ( conditionThatHappensAlot )
{
     //处理经常发生的业务逻辑
}
else if ( conditionThatHappensSomtimes ) 
{
     // 处理偶尔会发生的业务逻辑
}
else 
{
     // 处理几乎不会发生的情况
}
13、Actionscript虚拟机(Flash Player)推荐在循环内部用int而不是number,但是flash Player10在flash Player9的基础上做了很多
多的改进,int,uint和number之间的转换不在像以前那么慢了。

14、Resolve issues of promotion, unknown, or incorrect object types (不太清楚怎么翻译,个人猜测是每个变量都应该声明一个确定的类型,解决那些没有指定类型的警告信息活错误信息)

15、尽量少用unint,它可能会非常慢,但是Flashplayer10做了改进,速度不像以前那么慢了:
var footerHex : uint = 0x00ccff;

16、循环遍历的时候用int类型:
(var i: int = 0; i < n; i++) NOT for (var i: Number = 0; i < n; i++)

17、在用decimal的时候用number而不用int:
var decimal : Number  = 14.654; 而不用:var decimal : int  = 14.654;

18、用乘法代替除法:
用100*0.01代替100/100

19. Locally store function values in for and while statements instead of repeatedly accessing them 
for (..){ a * 180 / Math.PI; } 
declare: toRadians = a*180/Math.PI; outside of the loop









20、避免在循环中调用方法或计算:
var len : int = myArray.lengh; 
for (var i=0;i<len;i++){}
而不要用:
for (var i=0;i< myArray.lengh;i++){ }


21、用正则表达式进行字符串的校验,用String的方法进行字符串的查找:
// postal code validation example using regular expressions
private var regEx:RegExp = /^[A-Z][0-9][A-Z] [0-9][A-Z][0-9]$/i;
private function validatePostal( event : Event ) : void
{
     if( regEx.test( zipTextInput.text ) )
     {
          // handle invalid input case
      }
}

// search a string using String methods
var string : String = "Search me";
var searchIndex : int = string.indexOf( "me" );
var search : String = string.substring( searchIndex, searchIndex + 2 );


22. Reuse objects to maintain a “memory plateau” DisplayObjects, URLLoader objects 23. Follow the Flex component model: 
createChildren();
commitProperties();
updateDisplayList();


24、尽量少用dataGrid这样的重量级的组件,除非你用一个常规的list无法实现你要的功能。

25. Avoid Repeaters for scrollable data

26、尽量避免使用setStyle()方法,这个方法在Flex框架里面是众多代价敖贵的方法之一。

27、当你用过多的容器嵌套的时候会较低应用程序的性能:
<mx:Panel>
    <mx:VBox>
        <mx:HBox>
            <mx:Label text="Label 1" />
             <mx:VBox>
                  <mx:Label text="Label 2" /> 
              </mx:VBox>
              <mx:HBox>
                  <mx:Label text="Label 3" />
                  <mx:VBox>
                      <mx:Label text="Label 4" />
                  </mx:VBox>
              </mx:HBox>
          </mx:HBox>
      </mx:VBox>
</mx:Panel>
28、没有必要每次都用容器组件作为你自定义组件的父控件:
<mx:Image xmlns:mx="http://www.adobe.com/2006/mxml" 
     source="avatar.jpg" width="200" height="200" />
29、减少不必要的容器嵌套
30、不要在Panel中vBox和HBox,用Panel的Layout属性就可以了
31、不要在application标签下用HBox,和Vbox,道理和30一样
32. Set the recycleChildren property to true to improve a Repeater object's performance (re-uses previously created children instead of creating new ones) 
<mx:Script>
    <![CDATA[
        [Bindable]
        public var repeaterData : Array = ["data 1", "data 2"];
    ]]>
</mx:Script>

<mx:Repeater id="repeater" dataProvider="{repeaterData}"> 
    <mx:Label text="data item: {repeater.currentItem}"/>
</mx:Repeater>




33、将应用程序的帧率设置为60fps活着更低:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml 
    frameRate="45">
</mx:Application>
34. Avoid multiple display manipulations per frame
35. Code against ENTER_FRAME events instead of Timer events 
public function onEnterFrame( event : Event ) : void
{
}
private function init() : void
{
     addEventListener( Event.ENTER_FRAME, onEnterFrame );
}


NOT:



public function onTimerTick( event : Event ) : void
{
}
private function init() : void
{
     var timer : Timer = new Timer();
     timer.start();
     timer.addEventListener( TimerEvent.TIMER, onTimerTick );
}



36. To defer object creation over multiple frames use: 
<mx:Container creationPolicy="queued"/> 




37. Alpha = 0 is not the same as visible = false (Objects marked invisible are passed over) 
loginButton.visible = false;


NOT:



loginButton.alpha = 0;















分享到:
评论

相关推荐

    flex优化全集 flex优化全集

    ### Flex优化全集 #### 1. 数组操作优化 - **初始化数组**:在Flex中,可以使用两种方式初始化数组。第一种是直接赋值`var a:Array = []`;第二种是通过`new Array()`构造函数。推荐使用第一种方法,因为它更加简洁...

    Flex 性能优化全集

    ### Flex性能优化全集 #### 引言 随着技术的发展,用户对于应用程序的要求越来越高,不仅在功能上有所期待,更注重应用的响应速度与流畅度。Adobe Flex 是一款用于构建和部署跨平台富互联网应用程序的强大工具,...

    flex builder 优化

    flex builder 优化

    flex瘦身优化之我见(内部资料)

    【Flex瘦身优化】是针对Flex开发中遇到的项目体积过大的问题进行的一系列优化措施,主要是为了减小Flex应用程序的发布体积,提高加载速度和用户体验。以下是一套可行的优化方案: 1. **关闭编译调试信息**: 添加`...

    flex编译优化方法

    Flex编译优化方法是提升开发效率的关键,尤其是在大型Flex项目中,编译时间长和Eclipse性能问题可能严重影响开发流程。以下是一些针对Flex编译慢的优化策略: 1. **关闭不必要的项目**:在Eclipse中,确保只开启...

    Flex内存释放优化原则

    FLEX内存释放优化原则,内存泄露解决方法,内存泄露情况

    Flex开发优化指南

    老外写的Flex优化指南,内容很精彩,不容错过

    FLEX内存释放优化原则

    ### FLEX内存释放优化原则详解 #### 一、引言 在FLEX开发过程中,合理的内存管理至关重要。不当的内存管理不仅会导致应用运行效率降低,还可能引发诸如黑屏、模糊显示等问题,严重影响用户体验。本文将针对“FLEX...

    flex学习笔记 flex学习总结 flex学习教程

    9. **Flex性能优化**:学习如何通过优化组件使用、减少网络请求、缓存策略等方式提升Flex应用的性能。 10. **实践项目**:理论学习后,通过实际项目练习,将所学知识应用于实践中,是巩固和提高技能的最佳方式。 ...

    Flex资料大全(Flex白皮书 Flex cookbok Flex编程指南 Flex设计模式等)

    这个文档可能专注于客户端与服务器之间的性能优化,讨论了如何在Flex应用中实现高效的数据通信、减少延迟、提高响应速度等,对优化Flex应用性能有重要指导价值。 5. **devappsflex.pdf**: 可能是关于开发Flex...

    flex 面试题flex

    【Flex面试题】Flex面试题主要涵盖Flex的基础概念、开发框架、MVC模式的应用、内存管理、垃圾回收机制、前端性能优化以及与后端通信等多个方面。以下是对这些知识点的详细解析: 1. AS2与AS3的区别: AS2...

    flex flex和 java交互

    9. **错误处理和优化**:添加错误处理机制,优化通信效率,确保系统的稳定性和性能。 在描述中提到的“包括所有的jar包”,这意味着压缩包可能包含了如BlazeDS或LiveCycle Data Services的相关库,这些库对于实现...

    FLEX网站源码 FLEX网站源码 FLEX网站源码

    9. **调试与优化**:Flex提供了强大的调试工具,如Flex Builder的调试器,帮助开发者定位和修复问题。此外,通过优化ActionScript代码和组件使用,可以提高Flex应用的性能。 10. **学习资源**:对于初学者,可以...

    flex 官方文档 中文教程

    了解如何优化Flex应用的性能至关重要,包括减少组件数量、优化数据绑定、使用正确的布局策略等。 总之,Flex中文教程涵盖了Flex开发的各个方面,无论你是初学者还是有经验的开发者,都能从中受益。通过深入学习和...

    flex实战项目,flex开发

    在这个过程中,开发者会学习如何利用Flex SDK或Flex Builder创建用户界面,如何使用ActionScript处理业务逻辑,以及如何调试和优化应用。 6. **Flex开源项目**:开源意味着源代码对公众开放,开发者可以查看、学习...

    flex全书籍 flex全书籍

    10. **最佳实践与性能优化**:学习Flex时,了解如何编写高效代码、优化布局和内存管理,以及如何利用缓存和数据流控制提升应用性能,是成为专业Flex开发者的关键。 通过阅读Flex全书籍,你将能够掌握这些核心概念和...

    PureMVCCairngorm对Flex开源框架的优化组合

    ### PureMVC与Cairngorm对Flex开源框架的优化组合 #### 一、引言 随着Rich Internet Applications (RIA) 的兴起,Flex 技术因其强大的用户界面设计能力和跨平台特性而受到广泛关注。Flex 不仅能提供丰富的用户体验...

    test_avatar.rar_flex_游戏优化

    在IT行业中,游戏开发是一项复杂且技术密集型的工作,尤其对于使用Adobe Flex框架进行开发的项目来说,优化是提升用户体验的关键。"test_avatar.rar_flex_游戏优化"这个标题暗示了我们正在探讨一个与Flex相关的游戏...

    flex帮助文档--(flex学习文档)

    随着技术的发展,Flex经历了多个版本的更新,包括Flex 3、4、4.5等,每个新版本都引入了更多功能和优化。目前,社区维护的Apache Flex SDK继续支持Flex的开发。 10. **Flex的学习资源** "flex中文帮助"文档很可能...

Global site tag (gtag.js) - Google Analytics