我最近做了一个测试,发现Flex(as3)的计算性能特别差(比java慢了几乎几百倍)。但是,为什么Web视频媒体上Flex却表现不错?求高手讲解讲解!
试验一、1到1亿的求和:
java代码:
public static void main(String[] arg)
{
long begin=new Date().getTime();
int result=0;
for(int i=0;i<=100000000;i++)
{
result+=1;
}
long end=new Date().getTime();
System.out.println("用时:"+(end-begin));
}
Flex as3代码:
protected function button1_clickHandler(event:MouseEvent):void
{
var t1:Number=getTimer();
var count:int=0;
for(var i:int=0;i<100000000;i++)
{
count+=1;
}
var t2:Number=getTimer();
var result:Number=t2-t1;
trace("用时:"+result.toString());
}
试验结果:
java耗时:90ms
AS3耗时:8100ms
试验二、A函数调用B函数。其中B函数不做任何操作。
java代码:
private void test()
{
long begin=new Date().getTime();
int i=100000000;
while(i>0)
{
func();
i--;
}
long end=new Date().getTime();
System.out.println("用时:"+(end-begin));
}
private void func()
{
}
Flex as3 代码:
protected function button2_clickHandler(event:MouseEvent):void
{
var t1:Number=getTimer();
var i:int=100000000;
while(i>0)
{
func();
i--;
}
var t2:Number=getTimer();
var result:Number=t2-t1;
trace("用时:"+result.toString());
}
private function func():void
{
}
试验结果:
java耗时:44ms
Flex耗时:30200ms
flex
java
as3
------解决方案--------------------
貌似因为AS代码是纯解释执行的,而JAVA代码是编译成IL后运行的,之所以AS视频流畅,是因为使用了硬件加速而非纯CPU执行.