您的位置:首页 > 其它

Flash 与性能实验笔记:几种常用数据类型创建时间

2010-06-06 09:56 363 查看
这个时间测试是林林给的测试,但是他测试出来的数据和我的不一样,也许因为机器配置差的缘故,创建的时候使用的时间不一样。

在As3 我们常用的复杂数据类型有Object ,Array,Vector等 ,我们使用三种比较常见的复杂数据类型进行时间对比。

我的机器配置: 闪龙2200+

内存 768

系统 windows xp sp2

//flash cs5 测试

var max:int=1000000;
trace("flash cs5 测试"+max+"次数");
testTime();

function testTime():void
{
var currentTime:uint=getTimer();

for(var i:int=0;i<max;i++)
{
var obj:Object={};

}

var lastTime:uint=getTimer();
trace("{}:所用的时间",lastTime-currentTime);

currentTime=getTimer();

for(var i:int=0;i<max;i++)
{
var obj:Object=new Object();

}

lastTime=getTimer();
trace("Object:所用的时间",lastTime-currentTime);

currentTime=getTimer();

for(var i:int=0;i<max;i++)
{
var Arrayobj:Array=new Array();

}

lastTime=getTimer();
trace("Array:所用的时间",lastTime-currentTime);

currentTime=getTimer();

for(var i:int=0;i<max;i++)
{
var Arrayobj:Array=[];

}

lastTime=getTimer();
trace("[]:所用的时间",lastTime-currentTime);

currentTime=getTimer();

for(var i:int=0;i<max;i++)
{
var vector_obj:Vector.<Number>=new Vector.<Number>();

}

lastTime=getTimer();
trace("Vector:所用的时间",lastTime-currentTime);

}






和不同机器测试把他放在浏览器进行测试

在一个朋友的机器进行测试使用{} 创建object 比new obeject 快,在1000000次数进行测试



对比在我的机器所测试的时间{} 创建的object 时间会大一些,我采用的flash player 10.1 时间上创建减少不少



初步结果:在 不同机器测试创建的对象所耗的时间是有一定差距,经过多次测试很明显一个就是new vector 创建的时间明显比new Array 的时间少,至于object 创建两种写法,不同机器呈现出的结果也有一些差别,采用[] 创建的时间反而会比new Array 的少了很多。网上的一些总结也确实有这样一回事。在少数的情况下,其实差不不算很大,在多数情况下[] 写法确实使用时间比new Array 小了不少。

再实验一下数组当中的一种常用写法

var list:Array=new Array();

var max:int=list.length;

for (var j:int=0; j<list.length; j++)

for (var k:int=0; k<max; k++)

这两种对比写法,后者确实会给时间带来一定好处,运算量减少了不少,网上这种介绍确实是带来运算的提升。

list.length pk max

var list:Array=new Array();

for (var i:int=0; i<10000000; i++)
{
list.push(i);

}

var max:int=list.length;
var array:Array=[];
var array2:Array=[];
var currentTime:uint=getTimer();
for (var j:int=0; j<list.length; j++)
{
array[j]=j;
}
var lastTime:uint=getTimer();

trace("所用的时间",lastTime-currentTime);

currentTime=getTimer();
for (var k:int=0; k<max; k++)
{
array2[k]=k;
}
lastTime=getTimer();

trace("所用的时间",lastTime-currentTime);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐