zoukankan      html  css  js  c++  java
  • 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,"
    ");
    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,"
    ");
    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,"
    ");
    View Code

    输出结果:

    string
    Vector<String>耗时: 74

    string
    Array(String)耗时: 112

    object
    Array(Object)耗时: 193

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

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com 
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
     
  • 相关阅读:
    SDOI2020游记
    Git和GitHub详解
    P1251 餐巾计划问题
    P2824 [HEOI2016/TJOI2016]排序
    P3224 [HNOI2012]永无乡
    P3605 [USACO17JAN]Promotion Counting晋升者计数
    P4314 CPU监控
    P2939 [USACO09FEB]改造路Revamping Trails
    P4254 [JSOI2008]Blue Mary开公司
    P1772 [ZJOI2006]物流运输
  • 原文地址:https://www.cnblogs.com/buerjiongjiong/p/4731085.html
Copyright © 2011-2022 走看看