private static const NUM_LOOPS:int = 15;

public function VectorTest():void
{

var vector:Vector.<int> = new Vector.<int>(1000000);
var array:Array = new Array(1000000);
var sTime:Number;

sTime = getTimer();
loopArray(array);
trace("Loop Array Avg (1) : " + ((getTimer() - sTime)));

sTime = getTimer();
loopVector(vector);
trace("Loop Vector Avg (1) : " + ((getTimer() - sTime)));

sTime = getTimer();
loopArray(array, false);
trace("Loop Array Avg (2) : " + ((getTimer() - sTime)));

sTime = getTimer();
loopVector(vector, false);
trace("Loop Vector Avg (2) : " + ((getTimer() - sTime)));

sTime = getTimer();
loopArray(array);
trace("Loop Array Avg (3) : " + ((getTimer() - sTime)));

sTime = getTimer();
loopVector(vector);
trace("Loop Vector Avg (3) : " + ((getTimer() - sTime)));

}

private function loopArray(a:Array, isRead:Boolean = true):void
{
var len:Number = a.length;

var n:int;
for (var i:int = 0; i < NUM_LOOPS; i++)
{
for (var k:int = 0; k < len; k++)
{
if (isRead)
n = a[k];
else
a[k] = 100;
}
}
}

private function loopVector(v:Vector.<int>, isRead:Boolean = true):void
{
var len:Number = v.length;

var n:int;
for (var i:int = 0; i < NUM_LOOPS; i++)
{
for (var k:int = 0; k < len; k++)
{
if (isRead)
n = v[k];
else
v[k] = 100;
}
}
}

上面的测试代码,大致输出如下:

Loop Array Avg (1) : 3074
Loop Vector Avg (1) : 1749
Loop Array Avg (2) : 1835
Loop Vector Avg (2) : 1635
Loop Array Avg (3) : 1675
Loop Vector Avg (3) : 1649

但如果把Loop Array Avg (1) Loop Vector Avg (1) 注释掉,结果会输出如下:

Loop Array Avg (2) : 1881
Loop Vector Avg (2) : 1641
Loop Array Avg (3) : 1794
Loop Vector Avg (3) : 1704

可见,array只是慢在写操作上(因为要自动扩容),如果写操作不除非自动扩容时,写操作的速度和vector其实是差不多的。

至于读操作,array和vector其实是差不多的

vector & array的更多相关文章

  1. Codeforces Global Round 6D(VECTOR<ARRAY<INT,3> >)

    一个人只要存在债务关系,那么他的债务可以和这整个债务关系网中任何人连边,和他当初借出或欠下的人没有关系.只需要记录他的债务值即可. #define HAVE_STRUCT_TIMESPEC #incl ...

  2. vector array and normal stanard array

    array 数组的长度固定 vector 自由存储区(栈),动态长度 普通标准数组相对较不安全,不方便; array,vector对象成员函数支持数组越界检测,同时代价是效率问题: array,普通标 ...

  3. 侯捷STL学习(七)--深度探索vector&&array

    layout: post title: 侯捷STL学习(七) date: 2017-06-13 tag: 侯捷STL --- 第十六节 深度探索vector vector源码剖析 vector内存2倍 ...

  4. Implementing a Dynamic Vector (Array) in C(使用c实现动态数组Vector)

    An array (vector) is a common-place data type, used to hold and describe a collection of elements. T ...

  5. C/C++基础----string, vector, array

    1 using声明 方便使用命名空间中的成员,不用每次xxx::yyy 头文件不应该包含using声明(不经意间包含了一些名字) 2 string 表3.1:初始化string对象的方式 string ...

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

     使用C++风格的数组.不须要管理内存. array要注意不要溢出,由于它是栈上开辟内存. array适用于不论什么类型 #include<iostream> #include< ...

  7. vector以及array和数组

    //比较数组.vector.array #include <iostream> #include <vector> #include <array> #includ ...

  8. 【译】Rust中的array、vector和slice

    原文链接:https://hashrust.com/blog/arrays-vectors-and-slices-in-rust/ 原文标题:Arrays, vectors and slices in ...

  9. Java数组与vector互转

    Java数组与vector互转 /* Object[] object1 = null ; //数组定义 Vector<Object> object2;//Vector定义 object2 ...

随机推荐

  1. js小技巧(二)

    //移动的图层,拖动 1.<span style='position:absolute;width:200;height:200;background:red' onmousedown=Mous ...

  2. win7系统中任务计划程序的使用与查询

    任务计划程序是电脑中的一个好工具,用好了,会让我们使用电脑变的很便捷,具体经验教程如下所示: 工具/原料 装有win7系统的电脑 方法/步骤 在桌面找到“我的电脑”,右击,弹出窗口,找到“管理”,如下 ...

  3. 叠罗汉II

    叠罗汉是一个著名的游戏,游戏中一个人要站在另一个人的肩膀上.为了使叠成的罗汉更稳固,我们应该让上面的人比下面的人更轻一点.现在一个马戏团要表演这个节目,为了视觉效果,我们还要求下面的人的身高比上面的人 ...

  4. (.iso)光盘镜像文件的打开与安装

    直接解压就可以打开,然后就可以安装.exe文件

  5. XP下,文件夹添加右键命令行

    原文:XP下,文件夹添加右键命令行 总共有3种方式: --------------------1---------------------------------------------------- ...

  6. android学习笔记二:Intent

    1.Intent作用 协助完成各个组建间的通信.如activity间.启动service.Broadcast. 2.Intent构成 1.Componet name:要启动的目的组建. 2.Actio ...

  7. http://blog.csdn.net/lvyuanj/article/details/51235135

    http://blog.csdn.net/lvyuanj/article/details/51235135

  8. CentOS下如何查找大文件

    在Windows系统中,我们可以使用TreeSize工具查找一些大文件或文件夹,非常的方便高效,在Linux系统中,如何去搜索一些比较大的文件呢?下面我整理了一下在Linux系统中如何查找大文件或文件 ...

  9. 使用 tar 命令管理存档文件

    tar命令用于将大型文件集汇集为一个文件(存档) tar的三种操作:c(创建存档).t(列出存档的内容).x提取存档 tar的常用选项:f(要操作的存档文件名).v(可视化操作) 创建压缩的tar存档 ...

  10. spring路径通配符

    在应用Spring的工程中,使用class path的方式加载配置文件应该是最常用的做法,然而对大部分人来说,刚开始使用Spring时,几乎都碰到过加载配置文件失败的情况,除了配置上的错误外,很多时候 ...