我认为重用同一个实例Matrix
比每次都创建一个新实例更有效。
事实上,创建一个新实例是一个相对繁重的操作,这就是使用缓存的原因:创建几个实例并重用它们,而不是创建大量实例。
我运行了一个小基准,它证实了我的答案:
var t:Number;
var i:int;
var N:int = 10000000;
t = getTimer();
for (i = 0; i < N; i++) {
_matrix = new Matrix();
}
trace(getTimer()-t); // 7600
t = getTimer();
for (i = 0; i < N; i++) {
_matrix.a = 1;
_matrix.b = 0;
_matrix.c = 0;
_matrix.d = 1;
_matrix.tx = 0;
_matrix.ty = 0;
}
trace(getTimer()-t); // 4162
最后,请注意差异并没有那么大,并且创建10000000
新实例只需要7600 ms
,因此除非您每帧创建数千个矩阵,否则任何一种方法都不会对性能产生明显影响。
编辑:
使用该方法identity
将具有两种方法的优点(简单性和性能):
t = getTimer();
for (i = 0; i < N; i++) {
_matrix.identity();
}
trace(getTimer()-t); // 4140