Array Vector 性能测试

发表评论 阅读评论

想做个对象池,以降低CPU销毁,以前都是用Array做的。
帮助上说flashplayer10的Vector速度要比Array的速度快的多今天特来测试下。
不过测试结果令我大失所望。

  1. push Vector慢,   Array 快  (可以忽略)
  2. pop : Vector快,   Array 慢 (可以忽略)

这样的结果让我对Vector的性能产生了怀疑,又测试了下Vector的的存取速度。

  1. 读取 Vector快,   Array 慢  (可以忽略)
  2. 存储Vector慢,   Array 快 (可以忽略)

看来Vector在对Array的性能较量中并不占优势。
只是Vector是单一元素类型的数组,拥有Array所没有的类型检查。

结论:做对象池还是用Vector吧,不管性能了。

下面是测试代码:

package 
{
    import flash.display.Sprite;
    import flash.utils.getTimer;

    /**
     * Array Vector 访问速度测试
     * 
     * www.litefeel.com
     * lite3@qq.com
     * @author lite3
     */
    public class Main extends Sprite 
    {

        private const MAX:int = 10000000;

        private var arr:Array;
        private var list:Vector.<MyClass>;

        public function Main():void 
        {
            var n:int;
            var time:int = 0;
            var arrayTimer:int, vectorTime:int;

            var my:MyClass = new MyClass();

            arr = [];
            list = new Vector.<MyClass>();

            time = getTimer();
            while (n--)
            {
                arr.push(my);
                list.push(my);
            }

            // Array test
            n = MAX;
            time = getTimer();
            while (n--)
            {
                arr[n];
                arr[n];
                arr[n];
                arr[n];
            }
            arrayTimer = getTimer() - time;

            // Vector test
            n = MAX;
            time = getTimer();
            while (n--)
            {
                list[n];
                list[n];
                list[n];
                list[n];
            }
            vectorTime = getTimer() - time;

            trace("Array 访问时间 = ", arrayTimer, "Vector 访问时间 =", vectorTime);
        }
    }
}

class MyClass { }

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
回到顶部