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

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");

时间: 2024-10-18 21:08:18

ActionScript3.0(AS3)中的泛型数组Vector的相关文章

[原创图书]《ActionScript3.0游戏中的图像编程》连载——前言

1946年,计算机在第三次工业革命的推动下得以诞生并发展.从此地球上多了一类人,他们的世界很简单,每天不是和0接触,就是跟1来往.他们低调做人,高调做事,他们务实为民,不求名利,他们,就是可爱可人,可歌可泣的IT工作者--程序员! 都说程序员不善表达,没错,离开0和1,程序员就几乎不会说话了.与此同时,程序员也恰恰是最善于表达的人,他们只用0和1这两个数字,就可以准确无误地将用户的需求传达给电脑并使其正确运行,其语言之简炼,其算法之精准,其逻辑之严谨,其结果之准确,试问除了程序员,还有谁可以做得

原创教程“ActionScript3.0游戏中的图像编程”开始连载啦!

        经过近两年的不懈努力,笔者的原创教程“ActionScript3游戏中的图像编程”终于在今日划上了完美的句号!这当中记录着笔者多年来在游戏制作,尤其是当中图像处理方面的经验心得.虽然使用的语言是目前可能正在没落的ActionScript3.0,但由于其中渗透着深刻的编程思想和实用技巧,因此其意义已经远远超越了ActionScript本身.您可以把从本书学到的知识轻松移植到其他支持图像编程的开发语言中(我也想换个语言重写,可惜精力不足).         此外,本书还包含了一些颜色

原创图书《ActionScript3.0游戏中的图像编程》开始连载啦!

        经过近两年的不懈努力,笔者的原创图书<ActionScript3游戏中的图像编程>终于在今日划上了完美的句号!这当中记录着笔者多年来在游戏制作,尤其是当中图像处理方面的经验心得.虽然使用的语言是目前可能正在没落的ActionScript3.0,但由于其中渗透着深刻的编程思想和实用技巧,因此其意义已经远远超越了ActionScript本身.您可以把从本书学到的知识轻松移植到其他支持图像编程的开发语言中(我也想换个语言重写,可惜精力不足).         此外,本书还包含了一些颜

[ActionScript 3.0] AS3中的位图(BitmapData)应用

1.位图使用(模糊)滤镜 //创建一个矩形区域的BitmapData var bmd:BitmapData = new BitmapData(80, 30, false, 0xffffff); //画个红色的矩形 var rect:Rectangle = new Rectangle(20, 10, 40, 10); bmd.fillRect(rect, 0xFF0000); //找到红色矩形的右上顶点 var pt:Point = new Point(rect.left, rect.top);

[ActionScript 3.0] AS3中Loader无法彻底卸载

我测试发现,实例化的Loader无法彻底卸载,同行有没有办法,求赐教! 1 import flash.display.Loader; 2 import flash.net.URLRequest; 3 import flash.events.Event; 4 5 var ldr:Loader = new Loader(); 6 ldr.name = "ldr_0"; 7 ldr.load(new URLRequest("D:/svn/resources/src/KioskSys

Java中泛型数组创建总结

在java中,可以声明一个泛型数组,不能通过直接通过T[] tarr=new T[10]的方式来创建数组,最简单的方式便是通过Array.newInstance(Classtype,int size)的方式来创建数组例如下面的程序. public class ArrayMaker<T> { private Class<T> type; public ArrayMaker(Class<T> type) { this.type = type; } @SuppressWarn

java创建泛型数组

java中创建泛型数组并不是不可能,创建泛型数组通过反射,给构造函数传递两个参数,一个类型标记,一个数组大小.' 简单Demo如下: import java.lang.reflect.Array; /** * 创建泛型数组 * @author hetiantian */ public class GenericArrayWithTypeToken<T> { private T[] array; public GenericArrayWithTypeToken(Class<T> ty

[转]:Delphi XE中泛型数组的使用范例

Delphi XE中泛型数组的使用范例,下面的范例简单的使用了泛型字符串数组,如用 TArray 代替 array of Word, 还可以使用 TArray 类提供的算法(就是少了点). uses Generics.Collections, Generics.Defaults; {测试 TArray 的 Sort 方法} procedure TForm1.Button1Click(Sender: TObject); var arr: TArray<string>; //同 array of

C++中的数组array和vector,lambda表达式,C字符串加操作,C++中新类型数组(数组缓存),多元数组,new缓冲

 使用C++风格的数组,不需要管理内存. array要注意不要溢出,因为它是栈上开辟内存. array适用于任何类型 #include<iostream> #include<array> #include<vector>   //C++的标准库 #include<string>   //C++字符串 #include <stdlib.h> using  std::array; //静态数组,栈上 using std::vector; //动态