AS3.0 中的一些优化操作
来源:互联网 发布:互联网金融平台 知乎 编辑:程序博客网 时间:2024/06/06 05:12
在条件中抽取出计算
var x: Number = 0;
while( x++ < 1000 )
{
// do something
}
var x: Number = 0;
while( x < 1000 )
{
x++;
// do something faster
}
if( ( z = iz * 100 ) < 0 )
{
// do something
}
z = iz * 100;
if( z < 0 )
{
// do something faster
}
private function method1() : void
{
var tmpVar:int;
for(var i:Number=0; i<testArray.length; i++)
{
tmpVar = testArray[i];
}
}
53.34 ms
for(var i:int=0; i<testArray.length; i++)
35.58 ms
var l:int = testArray.length;
for(var i:int=0; i<l; i++)
21.6 ms
for(var i:int=0; i<100000; i++)
{
var v1:Number=10;
var v2:Number=10;
var v3:Number=10;
var v4:Number=10;
var v5:Number=10;
}
46.52 ms
for(var i:int=0; i<100000; i++)
{
var v1:Number=10, v2:Number=10, v3:Number=10, v4:Number=10, v5:Number=10;
}
19.74 ms
for(var i:int=0; i<100000; i++)
{
var val1:int = 4 * 2;
var val2:int = 4 * 4;
var val3:int = 4 / 2;
var val4:int = 4 / 4;
}
49.12 ms
for(var i:int=0; i<100000; i++)
{
var val1:int = 4 << 1;
var val2:int = 4 << 2;
var val3:int = 4 >> 1;
var val4:int = 4 >> 2;
}
非常小
x = int(1.232)
//equals:
x = 1.232 >> 0;
Assignment ( var a:TYPE = 0; )
int: 24-45ms
Number: 24-36ms
uint: 25-37ms
Statistically, they look the same, which is to be expected.
Assignment ( var a:TYPE = 0.5; )
int: 56-83ms
Number: 26-43ms
uint: 57-92ms
Predictably, Number is faster for fractional assignments, as the value does not need to be converted to an integer.
Division ( var a:TYPE = i/2; )
int: 60-105ms
Number: 34-64ms
uint: 184-278ms
Number is a much faster type for division, as expected from Sho's post. uint trails badly.
Multiplication ( var a:TYPE = i*2; )
int: 78-129ms
Number: 39-64ms
uint: 207-280ms
Similar results to division. I thought int might perform better as the value would never have to be converted to a float (whereas in division it would).
Addition ( var a:TYPE = i+2; )
int: 31-49ms
Number: 44-55ms
uint: 85-113ms
As expected from the plain iterator test, int is slightly faster for integer addition.
Bitshift ( var a:TYPE = i<<1; )
int: 31-63ms
Number: 61-114ms
uint: 71-130ms
第二种方法快20%
var t:int = a;
a = b;
b = t;
//equals:
a ^= b;
b ^= a;
a ^= b;
第二种方法快600%
x = 131 % 4;
//equals:
x = 131 & (4 - 1);
第二种方法快600%
isEven = (i % 2) == 0;
//equals:
isEven = (i & 1) == 0;
第三种比第二种快20%,第二种比第一种快2500%
//version 0
i = Math.abs(i);
//version 1
i = x < 0 ? -x : x;
//version 2
i = (x ^ (x >> 31)) - (x >> 31);
第二种方法快35%
eqSign = a * b > 0;
//equals:
eqSign = a ^ b >= 0;
原文地址:http://lab.polygonal.de/2007/05/10/bitwise-gems-fast-integer-math/
没有对事件做监听时不用派发事件
override public function dispatchEvent(evt:Event):Boolean {
if (hasEventListener(evt.type) || evt.bubbles) {
return super.dispatchEvent(evt);
}
return true;
}
willTrigger 代替hasEventListener(evt.type) || evt.bubbles也许更好
BitmapData用完过后一定要BitmapData.dispose();
trace(System.totalMemory / 1024);
// output: 43100
// Create a BitmapData instance
var image:BitmapData = new BitmapData(800, 600);
trace(System.totalMemory / 1024);
// output: 44964
image.dispose();
image = null;
trace(System.totalMemory / 1024);
// output: 43084
矢量图比位图节约内存,但同时对CPU 的消耗也比较大
- AS3.0 中的一些优化操作
- AS3 的一些优化
- 操作AS3.0中的timmer()对象
- AS3的一些优化计算方法
- AS3中的一些技巧代码
- AS3.0 效率优化
- AS3的一些代码优化方法
- AS3中io操作的一些安全问题
- AS3.0中的数据类型
- AS3.0中的ApplicationDomain
- AS3 坐标系中的一些简单计算
- AS3 graphics类中的一些常用函数
- 转帖:AS3.0性能优化
- As3.0 一些好书连接
- AS3中的位运算操作提速
- AS3.0:键盘的操作
- AS3.0中的区块设计
- AS3.0中的数组介绍
- 在Window.onload中加载/执行多个函数
- ubuntu ipv6访问youtube
- 你是如何成为 Lisp 程序员的
- 一个晶体管管放大电路实验总结
- 北方的东
- AS3.0 中的一些优化操作
- 开门帖!
- MFC RUNTIMECLASS
- vmlinux和bzImage的Makefile部分阅读
- 希尔排序 shellinsert c语言实现
- vc代码规范
- 原创企业级控件库之组合查询控件
- 开山之作
- Using libavformat and libavcodec(3)