码迷,mamicode.com
首页 > 编程语言 > 详细

ActionScript3.0(AS3)中的泛型数组Vector

时间:2015-08-14 21:22:34      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

Adobe官方并没有"泛型数组"的叫法,这是我自己对Vector的叫法(有点标题党),不过Vector在使用上确实跟c#中的泛型数组有些相似之处。

原作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com 

我们知道:ActionScript3.0中的Array数组可以存放多种类型,甚至在同一个Array数组中,可以同时存入String,Object,Number...,但其实我们在实际开发中,通常一个数组中所保存的元素类型都是一致的,为了改进这种情况下的效率,AS3.0新增了一个Vector类。

 

它强制要求数组中的每个元素都必须是同样的类型,从而省去了“装箱”、“拆箱”之类的操作,提高了性能。

 

下面这一段测试代码演示了Vector与Array的性能差异:

技术分享
 1 var count:uint=50000;
 2 var v:Vector.<String>=new Vector.<String>(count);//泛型数组Vector的声明方法
 3 var aStr:Array=new Array(count);
 4 var aObj:Array = new Array(count);
 5 var i:uint=0,j:uint=100;
 6 var t:String="";
 7  
 8 //初始化
 9 for (i=0; i<count-1; i++) {
10     v[i]=Math.random().toString();
11     aStr[i]=v[i];
12     aObj[i] = {"a":v[i]};
13 }
14  
15 //开始测试--Vector
16 var startTime=getTimer();
17 var elapsed:uint=0;
18  
19 while (j--) {
20     for (i=0; i<count-1; i++) {      
21         t=typeof v[i];
22     }
23 }
24 elapsed=getTimer()-startTime;
25 trace(t);
26 trace("Vector<String>耗时:",elapsed,"\n");
27  
28 //开始测试--Array(String)
29 j=100;
30 startTime=getTimer();
31 while (j--) {
32     for (i=0; i<count-1; i++) {
33         t=typeof aStr[i];
34     }
35 }
36 elapsed=getTimer()-startTime;
37 trace(t);
38 trace("Array(String)耗时:",elapsed,"\n");
39  
40 //开始测试--Array(Object)
41 j=100;
42 startTime=getTimer();
43 while (j--) {
44     for (i=0; i<count-1; i++) {
45         t=typeof aObj[i];
46     }
47 }
48 elapsed=getTimer()-startTime;
49 trace(t);
50 trace("Array(String)耗时:",elapsed,"\n");
View Code

ActionScript3.0(AS3)中的泛型数组Vector

标签:

原文地址:http://www.cnblogs.com/xiyuxiyu/p/4731085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!