zoukankan      html  css  js  c++  java
  • 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其实是差不多的

  • 相关阅读:
    android实现点击短链接进入应用 并获得整个连接的内容
    机房收费系统=三层+设计模式
    【数据库】SQL优化方法汇总
    HBase 数据库检索性能优化策略--转
    How to fix “HTTP Status Code 505 – HTTP Version Not Supported” error?--转
    使用VBS控制声音
    MSG命令使用详解
    bat删除系统默认共享
    C#:消息队列应用程序
    读写XML文档时,去掉新增加节点的“空命名空间”(xmlns=””)
  • 原文地址:https://www.cnblogs.com/tianlanliao/p/3434580.html
Copyright © 2011-2022 走看看