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

简介: Adobe官方并没有"泛型数组"的叫法,这是我自己对Vector的叫法(有点标题党),不过Vector在使用上确实跟c#中的泛型数组有些相似之处。   我们知道:ActionScript3.0中的Array数组可以存放多种类型,甚至在同一个Array数组中,可以同时存入String,Object,Number...,但其实我们在实际开发中,通常一个数组中所保存的元素类型都是一致的,为了改进这种情况下的效率,AS3.0新增了一个Vector类。

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

 

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

 

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

 

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

 

var count:uint=50000;
var v:Vector.<String>=new Vector.<String>(count);//泛型数组Vector的声明方法
var aStr:Array=new Array(count);
var aObj:Array = new Array(count);
var i:uint=0,j:uint=100;
var t:String="";

//初始化
for (i=0; i<count-1; i++) {
	v[i]=Math.random().toString();
	aStr[i]=v[i];
	aObj[i] = {"a":v[i]};
}

//开始测试--Vector
var startTime=getTimer();
var elapsed:uint=0;

while (j--) {
	for (i=0; i<count-1; i++) {		
		t=typeof v[i];
	}
}
elapsed=getTimer()-startTime;
trace(t);
trace("Vector<String>耗时:",elapsed,"\n");

//开始测试--Array(String)
j=100;
startTime=getTimer();
while (j--) {
	for (i=0; i<count-1; i++) {
		t=typeof aStr[i];
	}
}
elapsed=getTimer()-startTime;
trace(t);
trace("Array(String)耗时:",elapsed,"\n");

//开始测试--Array(Object)
j=100;
startTime=getTimer();
while (j--) {
	for (i=0; i<count-1; i++) {
		t=typeof aObj[i];
	}
}
elapsed=getTimer()-startTime;
trace(t);
trace("Array(String)耗时:",elapsed,"\n");

输出结果:

string
Vector<String>耗时: 74

string
Array(String)耗时: 112

object
Array(Object)耗时: 193

很明显:在数组元素类型相同的前提下,使用Vector来代替Array,性能能提升一倍左右。

目录
相关文章
|
人工智能
cdr2023绿色版一键安装下载CorelRAW2023
CDR全称是CorelRAW2023,它不同于Photoshop,PS是一款图片处理软件,而CDR是一款较为常用的矢量绘图设计软件,该软件给设计师提供了矢量动画、页面设计、网站制作、位图编辑和网页动画等多种功能,使用的比较多的版本是2022版的和X8版,不过呢我这里都有呢~
2308 0
|
10月前
|
数据采集 机器学习/深度学习 前端开发
PHP爬虫性能优化:从多线程到连接池的实现
本文介绍了一种通过多线程技术和连接池优化PHP爬虫性能的方法,以新浪投诉平台为例,详细展示了如何提高数据采集效率和稳定性,解决了传统单线程爬虫效率低下的问题。
285 2
PHP爬虫性能优化:从多线程到连接池的实现
|
6月前
|
存储 弹性计算 数据管理
阿里云OSS对象存储收费标准价格表:流量包+存储包2025最新整理
阿里云OSS对象存储2025收费标准及请求费用等,提供按量付费与包年包月两种模式。标准型本地冗余存储按量价为0.09元/GB/月,包年包月如500GB仅118.99元/年。流量费仅收公网出方向,闲时0.25元/GB、忙时0.5元/GB。更多详情见官网。
2528 2
|
12月前
|
运维 供应链 安全
SD-WAN分布式组网:构建高效、灵活的企业网络架构
本文介绍了SD-WAN(软件定义广域网)在企业分布式组网中的应用,强调其智能化流量管理、简化的网络部署、弹性扩展能力和增强的安全性等核心优势,以及在跨国企业、多云环境、零售连锁和制造业中的典型应用场景。通过合理设计网络架构、选择合适的网络连接类型、优化应用流量优先级和定期评估网络性能等最佳实践,SD-WAN助力企业实现高效、稳定的业务连接,加速数字化转型。
SD-WAN分布式组网:构建高效、灵活的企业网络架构
|
物联网 PyTorch 算法框架/工具
数据增强之图像变换与自定义transforms
数据增强之图像变换与自定义transforms
258 0
|
12月前
|
关系型数据库 MySQL 数据库
开发者如何使用云数据库RDS
【10月更文挑战第4天】开发者如何使用云数据库RDS
706 1
|
存储 Serverless API
托管及使用专属智能语音模型CosyVoice
CosyVoice是一款先进的声音合成模型,支持声音克隆与情感控制等功能,在教育、客服、游戏等领域有广泛应用。本文详细介绍如何在阿里云Serverless平台上部署CosyVoice应用,比如使用函数计算平台快速搭建。并且提供API调用方法及本地调试步骤,同时还介绍如何通过挂载NAS实现持久化存储,以及更新模型和定制后端服务的方法。
2183 13
|
XML 缓存 算法
As3 使用总结
As3 使用总结
137 0
|
存储 编解码 openCL
cdr2022绿色精简免安装下载教程
CorelDRAW是我最早接触的矢量绘图软件,一直用它绘图、排版、打印、输出,一直感觉它功能很强大,CorelDRAW是加拿大的corel公司出品的,corel公司的产品强调的是编辑功能,它将各种要实现的功能直接表现于具体操作中,动动鼠标基本就能实现你想要的效果。
6011 0
|
弹性计算 网络安全 数据安全/隐私保护
阿里云云服务ECS管理
本文主要介绍阿里云服务器ECS登录、管理、控制台操作等
阿里云云服务ECS管理