当前位置: 代码迷 >> 高性能WEB开发 >> 关于as3性能的有关问题 Flex
  详细解决方案

关于as3性能的有关问题 Flex

热度:861   发布时间:2013-04-26 16:27:53.0
关于as3性能的问题 Flex
我最近做了一个测试,发现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执行.