zoukankan      html  css  js  c++  java
  • 关于copyPixels、setPixels、setVector的讨论

    flash像素操作setPixels,setVector,copyPixels,draw性能比较

     

    看到有同学比较as3像素copy的效率的文章,得出的结论是:

    copyPixels>setPixels>setVector

    让我感到非常不理解的是新api setvector为何远远落后于其他两个呢,从原则上,setvector应该比setpixels快,今天碰巧做了测试,发现和上面的测试结果不太一样

    1 var start:int = getTimer();
    2             for (var j:int = 0; j < 9999; j++) {
    3                 var arr:Vector.<uint> = bmd2.getVector(new Rectangle(10, 20, 80, 80));
    4                 bmd1.setVector(new Rectangle(10, 10, 80, 80), arr);             
    5             }
    6             trace("setVector", getTimer() - start);
    1 var start:int = getTimer();
    2             for (var i:int = 0 ; i < 9999; i++) {
    3                 var arr:ByteArray = bmd2.getPixels(new Rectangle(10, 20, 80, 80));
    4                 arr.position = 0;
    5                 bmd1.setPixels(new Rectangle(10, 10, 80, 80), arr);             
    6             }
    7             trace("setPixels", getTimer() - start);
    1 var start:int = getTimer();
    2             for (var j:int = 0; j < 9999; j++) {
    3                 bmd1.copyPixels(bmd2, new Rectangle(10, 20, 80, 80), new Point(10, 10));
    4             }
    5             trace("copyPixels", getTimer() - start);
    1 var start:int = getTimer();
    2             for (var j:int = 0; j < 9999; j++) {
    3                 bmd1.draw(bmd2,new Matrix(0.8,0,0,0.8),null,null,new Rectangle(10, 10,80,80));
    4             }
    5             trace("draw", getTimer() - start);

    经过测试,执行1W次copy,setVector是800毫秒,setPixels是3973毫秒,draw870毫秒,当然最快的还是copyPixels:130毫秒

    setPixels读取的速度比较慢,写的速度大家基本相同。

    copyPixels>setVector>draw>setPixels

    这样的结果才合理,看来文章不能简单看看,动手才更有意义。

  • 相关阅读:
    如何读入位图(五)
    如何读入位图(四)
    绘制正弦曲线
    图像灰度均衡
    色彩填充及使用
    彩色扇形
    如何读入位图(三)
    ARCGIS FOR SILVERLIGHT Layer
    sqlserver2008多数据库操作(未完)
    SQLSERVER 2008 远程无法连接问题
  • 原文地址:https://www.cnblogs.com/AS30/p/2236093.html
Copyright © 2011-2022 走看看