想做个对象池,以降低CPU销毁,以前都是用Array做的。
帮助上说flashplayer10的Vector速度要比Array的速度快的多今天特来测试下。
不过测试结果令我大失所望。
- push : Vector慢, Array 快 (可以忽略)
- pop : Vector快, Array 慢 (可以忽略)
这样的结果让我对Vector的性能产生了怀疑,又测试了下Vector的的存取速度。
- 读取: Vector快, Array 慢 (可以忽略)
- 存储: 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 { }
» 转载请注明来源:www.litefeel.com » 《Array Vector 性能测试》
» 本文链接地址:https://www.litefeel.com/array-vector-performance/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
» 本文链接地址:https://www.litefeel.com/array-vector-performance/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
This post was last modified on 2019 年 03 月 04 日 01:15