vector & array
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的更多相关文章
- Codeforces Global Round 6D(VECTOR<ARRAY<INT,3> >)
一个人只要存在债务关系,那么他的债务可以和这整个债务关系网中任何人连边,和他当初借出或欠下的人没有关系.只需要记录他的债务值即可. #define HAVE_STRUCT_TIMESPEC #incl ...
- vector array and normal stanard array
array 数组的长度固定 vector 自由存储区(栈),动态长度 普通标准数组相对较不安全,不方便; array,vector对象成员函数支持数组越界检测,同时代价是效率问题: array,普通标 ...
- 侯捷STL学习(七)--深度探索vector&&array
layout: post title: 侯捷STL学习(七) date: 2017-06-13 tag: 侯捷STL --- 第十六节 深度探索vector vector源码剖析 vector内存2倍 ...
- 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 ...
- C/C++基础----string, vector, array
1 using声明 方便使用命名空间中的成员,不用每次xxx::yyy 头文件不应该包含using声明(不经意间包含了一些名字) 2 string 表3.1:初始化string对象的方式 string ...
- C++中的数组array和vector,lambda表达式,C字符串加操作,C++中新类型数组(数组缓存),多元数组,new缓冲
使用C++风格的数组.不须要管理内存. array要注意不要溢出,由于它是栈上开辟内存. array适用于不论什么类型 #include<iostream> #include< ...
- vector以及array和数组
//比较数组.vector.array #include <iostream> #include <vector> #include <array> #includ ...
- 【译】Rust中的array、vector和slice
原文链接:https://hashrust.com/blog/arrays-vectors-and-slices-in-rust/ 原文标题:Arrays, vectors and slices in ...
- Java数组与vector互转
Java数组与vector互转 /* Object[] object1 = null ; //数组定义 Vector<Object> object2;//Vector定义 object2 ...
随机推荐
- return x>y?x:y ?:啥意思?
? :是一个三目运算符,先判断‘?’前面的,若为真,执行‘?’后面语句,else,执行‘:’后面语句! return (x>y?x:y) 即if(x>y) 执行xelse执行y
- __stdcall 与 __cdecl
(1) _stdcall调用 _stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈. WIN32 Api都采用_stdcall调用方式,这样的宏定 ...
- JS异步加载的三种方式
js加载的缺点:加载工具方法没必要阻塞文档,过得js加载会影响页面效率,一旦网速不好,那么整个网站将等待js加载而不进行后续渲染等工作. 有些工具方法需要按需加载,用到再加载,不用不加载,. 默认正常 ...
- http://www.cnblogs.com/leiOOlei/p/5075402.html
http://www.cnblogs.com/leiOOlei/p/5075402.html
- Java:Comparator接口
public interface Comparator<T> 接口里面的方法 int compare(T o1, T o2) o1 > o2 返回 1 o1 = o2 返回 0 o1 ...
- 欧拉工程第51题:Prime digit replacements
题目链接 题目: 通过置换*3的第一位得到的9个数中,有六个是质数:13,23,43,53,73和83. 通过用同样的数字置换56**3的第三位和第四位,这个五位数是第一个能够得到七个质数的数字,得到 ...
- QT为QLabel添加Click事件(如果我们使用组件,我们关心的是信号槽;如果我们自定义组件,我们关心的是事件)
其实就是改写了一个函数:mouseReleaseEvent,当在QLabel放开鼠标的时,就发射点击信号. #ifndef CLICKEDLABEL_H_ #define CLICKEDLABEL_H ...
- CentOS7修改服务器主机名方法
CentOS7下修改主机名 第一种:hostname 主机名 01.hostname 主机名称 这种方式,只能修改临时的主机名,当重启机器后,主机名称又变回来了. 第二种:hostnamectl se ...
- wordcount数据流过程解析
(1)执行hadoopFile()操作,其中有生成HadoopRDD的new 方法.然后执行map方法.pair => pair._2.toString,只对Value值进行操作.在textFi ...
- mybaits3.2.8 别名包扫描通配符
<mybatis.version>3.2.8</mybatis.version><mybatis.spring.version>1.2.2</mybatis. ...