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组件的根并不需要是一个容器。

你可能感兴趣的:(位操作,Flex性能,类型变量,Math函数,容器嵌套)