Flex性能小结

Flex性能总结
1、使用强类型变量??
如:var crtPiece:int = movesArray[i].piece; 可以写成var crtMove:Move = movesArray[i]; var crtPiece:int = crtMove.piece;
如:var element:int = matrix[i][j];  可写成var row:Array = matrix[i];
var element:int = row[j];
但是本人测试过,存在疑问,发现前者比后者性能好,不知道什么原因,请看我的测试代码:
var b:String;
var d:Number = 0;
var time:int;
var e:Number = 0;
var f:Number = 0;
var a:Array = [];
var person:PersonVO;//可以自己实现一个PersonVO
var personTemp:PersonVO;
var i:int = 0;
var j:int = 0;
for (i=0; i<500000; i++)
{
person = new PersonVO();
person.ID = i;
person.name = "name"+i
a[i]=person;
}
var predate:Date = new Date();
trace(predate);
d = predate.valueOf();
time=getTimer();
trace(time);
for(i = 0; i < 500000; i++){
b = a[i].name;
}
predate = new Date();
trace(predate);
e = predate.valueOf()-d;
d = predate.valueOf();			
for(i = 0; i < 500000; i++){
personTemp = a[i];
b=personTemp.name;
}
predate = new Date();
trace(predate);
f=predate.valueOf()-d;
trace(e,f);

2、Math函数是比较耗时的,简单的功能可以尽量自己实现
var x:int = Math.min(a,b)可写成var x:int = (a<b) ? a : b;
3、位操作, 乘法和除法操作之间的性能比较
我们需要理解一种概念,任何代码到最后都会转化为机器语言来执行,所以应该不难理解位操作的性能比其他任何计算都快,只是它比较难读懂而已。
var x:int = a/2;性能低于var x:int = a*0.5;性能低于var x:int = a >> 1; //2^1 = 2;
if (n % x == 0)性能低于if (n & (x-1) == 0)
4、把复杂的条件表达式分解成各个独立的结构
while(--i > -1){if (a == 1 && b == 2 && c == 3 && d == 4){var k = d * c * b * a;}}

可写成如下形式:
while(--i > -1){if (a == 1){if (b == 2){  if (c == 3)   {    if (d == 4)    {var k = d * c * b * a;} }}}} 

5、可以使用[]来创建一个Array实例
var a = new Array(); 可写成 var a = [];
6、减少容器的嵌套
7、用HBox and Vbox来代替Grid.
8、一个MXML组件的根并不需要是一个容器。
1 楼 strugglesMen 2011-05-04  
Polygon是flex的扩展类,是用来在flash版 google 地图上画多边形,他好像不是uicomponent组件,那他

为什么有图形界面呢,怎样重写能让Polygon具有effect效果呢?

Polygon继承关系
http://alt.coxnewsweb.com/ajc/swf/_2010_Flash/MapsTest/sdk/docs/com/google/maps/overlays/Polyg

on.html

Polygon详细介绍
http://code.google.com/intl/zh-CN/apis/maps/documentation/flash/reference.html#Polygon
2 楼 ch19880311 2012-07-18  
strugglesMen 写道
Polygon是flex的扩展类,是用来在flash版 google 地图上画多边形,他好像不是uicomponent组件,那他

为什么有图形界面呢,怎样重写能让Polygon具有effect效果呢?

Polygon继承关系
http://alt.coxnewsweb.com/ajc/swf/_2010_Flash/MapsTest/sdk/docs/com/google/maps/overlays/Polyg

on.html

Polygon详细介绍
http://code.google.com/intl/zh-CN/apis/maps/documentation/flash/reference.html#Polygon


Polygon是折现类并不继承flex的uicomponent,
而Flex的uicomponent已经是一个比较成形的图形组件了,它最终也是实现flash.events.IEventDispatcher,Polygon之所以能画多边形,可能他通过实现鼠标事件调用google maps类中自己的图形类来画折线。
Flex中的所有特效都是继承Effect类,而Effect类继承关系如下:http://livedocs.adobe.com/flex/3_cn/langref/mx/effects/Effect.html
如果想要Polygon有特效,需要实现IEffect接口。