`

FP10中Vector与Array比较

    博客分类:
  • AS3
阅读更多

在FP10中新加了Vector 网上一度的盛传效率大大的提高,在写3D引擎前,对他们作了效率对比,测试环境是Thinkpad+Vista(64)+Flash CS4

1.先对数字进行测试

var tt:Vector.<int>=new Vector.<int>();
var ss:Array=new Array();
var i:uint;
var time:uint=getTimer();
for(i=0;i<1000000;i++)
    tt.push(i);
trace(getTimer()-time);
time=getTimer();
for(i=0;i<1000000;i++)
    ss.push(i);
trace(getTimer()-time);

测了10组数据

 

  1 2 3 4 5 6 7 8 9 10
Vector 112 109 113 110 110 112 109 108 113 108
Array 141 137 135 134 138 135 134 136 140 132

Vector比Array快23.4%左右

2.对Number进行测试

var tt:Vector.<Number>=new Vector.<Number>();
var ss:Array=new Array();
var i:uint;
var time:uint=getTimer();
for(i=0;i<1000000;i++)
    tt.push(Math.random());
trace(getTimer()-time);
time=getTimer();
for(i=0;i<1000000;i++)
    ss.push(Math.random());
trace(getTimer()-time);

测了10组数据

  1 2 3 4 5 6 7 8 9 10
Vector 352 343 350 351 358 356 359 348 348 354
Array 398 392 395 381 410 401 401 400 391 403

Vector比Array快12.9%左右

3.对Object进行测试

var tt:Vector<Object>=new Vector.<Object>();
var ss:Array=new Array();
var i:uint;
var time:uint=getTimer();
for(i=0;i<100000;i++)
{
    var a:Object=new Object();
    a.x=i;
    a.y=-i;
    tt.push(a);
}
trace(getTimer()-time);
time=getTimer();
for(i=0;i<100000;i++)
{
    var b:Object=new Object();
    b.x=i;
    b.y=-i;
    ss.push(b);
}
trace(getTimer()-time);

测了10组数据

  1 2 3 4 5 6 7 8 9 10
Vector 125 131 126 131 119 124 123 123 124 124
Array 81 80 80 82 89 81 82 82 81 82

Array比Vector快52%!

但还有一个问题,就是测试的数据量问题,在测试Object时,如果数据量变大到70W左右时,两者的效率持平,数据量再大,Array的速度就没有Vector快

同样的,当数据量降时,变化也不一样
Untitled-2 copy   用PS随便画了一下,大概的样子

 

在少于1000时,Array处理Object要比Vector快10%以上

再就是测试他们的处理排序问题

我们经常用的就是Z排序法

var i:int;
var tt:Vector.Object>=new Vector.Object>();
var ss:Array=new Array();
for (i=0; i<100000; i++) {
    var a:Object=new Object();
    a.x=i;
    a.y=- i;
    tt.push(a);
}
for (i=0; i<100000; i++) {
    var b:Object=new Object();
    b.x=i;
    b.y=- i;
    ss.push(b);
}
function getorder(xx:Object,yy:Object):Number {
    var ax:int=xx.y;
    var ay:int=yy.y;
    if (ax>ay) {
        return 1;
    } else if (ax<ay) {
        return -1;
    } else {
        return 0;
    }
}
var time:uint=getTimer();
tt.sort(getorder);
trace(getTimer()-time);
time=getTimer();
ss.sort(getorder);
//ss.sortOn("y", Array.DESCENDING | Array.NUMERIC);
trace(getTimer()-time);

测试的数据就没有贴出来,累了

在Array中如果用sort方法,效率和Vector差不多,效率持平,但是如果Array用sortOn方法,速度将提高10倍以上!!!

所以在Object中,还是选择Array,不管是排序还是大量应用Array,而在数据处理,越简单的数据,Vector处理的速度比Array提升的要多

P:个人认为,Vector在建立的时候主要是为了新加进来的Graphic里处理Path和TrianglePath,加快图形绘制和图形影射。

以上的测试都是在自己的机器上测试,并不是专业的,只是一些个人看法。

分享到:
评论

相关推荐

    松下PLC解密软件可解FP0、FP1、FP2、FP2SH、FP3、FPM、FPC、FP5、FP10、FP10S.zip

    标题中的“松下PLC解密软件可解FP0、FP1、FP2、FP2SH、FP3、FPM、FPC、FP5、FP10、FP10S.zip”表明这是一个针对松下(Panasonic)品牌的可编程逻辑控制器(PLC)的解密工具,能够适用于多个型号的PLC,包括FP0、FP1...

    reset_fp10.zip

    标题“reset_fp10.zip”和描述中的重复信息暗示了这个压缩包可能是一个修复或重置功能相关的工具,特别是与“fp10”有关。在IT领域,"fp"常常代表“Floating Point”(浮点运算)或者“Function Point”(功能点),...

    松下PLC FP解密 可解FP0、FP1、FP2、FP2SH、FP3、FPM、FPC、FP5、FP10、FP10S、FP10SH系列密码.zip

    FP系列是松下推出的一系列不同型号的PLC产品,包括FP0、FP1、FP2、FP2SH、FP3、FPM、FPC、FP5、FP10、FP10S以及FP10SH等。这些型号覆盖了从小型到大型,从基本功能到高级应用的各种需求。 描述中提到的“松下FP解密...

    打印机驱动 FP-550K_W10

    打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10...

    论文研究-FP_growth与Apriori算法比较应用 .pdf

    在比较Apriori算法和FP_growth算法时,FP_growth算法因为其高效性和对大数据集的友好性,被认为是更为先进和实用的算法。然而,企业选择具体算法时,应根据自身业务需求、数据特性和计算资源综合考虑,以达到最优的...

    Desktop_FP腔_FP干涉_FP仿真_matlabFP腔_sleephtt_源码

    标题中的"Desktop_FP腔_FP干涉_FP仿真_matlabFP腔_sleephtt_源码"指的是一个桌面应用,主要涉及FP腔(Fabry-Perot腔)的干涉现象、仿真以及相关的MATLAB源码。FP腔是一种光学谐振器,常用于光谱分析、激光技术等领域...

    FP6296中文应用手册.pdf

    FP6296中文应用手册

    CFP-FP人脸识别数据集

    CFP-FP人脸识别数据集是计算机视觉领域中用于人脸识别任务的一个重要资源,它在研究和开发高精度的人脸识别算法时扮演着关键角色。该数据集由两部分组成:CFP_FP_aligned_112和cfp_fp_pair.txt,它们分别包含了经过...

    FP7195中文应用手册.pdf

    FP7195中文应用手册

    FP7721芯片最新中文规格书.pdf

    FP7721是一款专为中小型薄膜晶体管(TFT)液晶显示器(LCD)设计的集成电源解决方案,尤其适用于智能手机和平板电脑的液晶面板驱动。该芯片的核心特性在于其内置的正电荷泵和负电荷泵,能够提供稳定且高效的电源支持...

    松下PLC FP0-P1 P2 P3 P5 P10 FP10SH解密软件.zip

    可解FP0、FP1、FP2、FP2SH、FP3、FPM、FPC、FP5、FP10、FP10S、FP10SH系列密码

    C++版的fp-growth算法

    在C++中实现FP-Growth,可以充分利用C++的效率优势,同时保持代码的可读性和可维护性。 **FP-Growth算法的基本原理** 1. **预处理**:首先,输入数据被转换为一个交易数据库,其中每个事务是一个项集,每个项集...

    FP10.1的绘制对比测试

    每个源码文件(FP10Test*.as)可能代表了一个特定的测试场景,比如FP10Test3.as可能是测试大量小图形的绘制性能,而FP10Test6.as可能是测试复杂的路径绘制。SWF文件则对应了这些源码的运行实例,可以用来直观地查看...

    FP6293中文应用手册.pdf

    FP6293中文应用手册

    FPGrowth的代码

    《FPGrowth算法详解与代码实现》 在数据挖掘领域,关联规则学习是一种探索数据中项集之间有趣关系的重要方法。其中,FPGrowth(Frequent Pattern Growth)算法因其高效性和内存效率,成为了关联规则挖掘中的热门...

    rda5807fp数控收音机_rda5807fp数控收音机.rar_RDA5807FP_51单片机_收音机_数控_

    标题中的“rda5807fp数控收音机”是指基于RDA5807FP芯片设计的一款数字控制的收音机项目。RDA5807FP是一款高性能、低功耗的立体声调频接收芯片,常用于便携式和车载收音机等设备。它集成了调谐器、解码器、音频处理...

    FP5217中文应用手册.pdf

    FP5217中文应用手册

    FP7209中文应用手册.pdf

    FP7209中文应用手册

    FP6291最新中文规格书.pdf

    FP6291是一款高效的电流模式升压DC-DC转换器,特别适用于需要小巧封装和高性能的应用场景。这款转换器内置0.2Ω功率MOSFET,能提供高达2.5A的输出电流,最高可达12V的可调输出电压。其1MHz的工作频率使得电路设计...

Global site tag (gtag.js) - Google Analytics