gpt4 book ai didi

actionscript-3 - 重置属性集合或创建新实例是否更快?

转载 作者:行者123 更新时间:2023-12-01 10:06:22 26 4
gpt4 key购买 nike

我有一个 Matrix,我将其回收并用于将 DisplayObject 实例绘制到 Bitmap 上。

目前,我在渲染每个项目之前重置了 Matrix,如下所示:

_matrix.a = 1;
_matrix.b = 0;
_matrix.c = 0;
_matrix.d = 1;
_matrix.tx = 0;
_matrix.ty = 0;

做上面的事情会更好,还是只做这个更好?:

_matrix = new Matrix();

通常我会说前者,但我不确定在 Matrix 的情况下,我重置(数学)的每个属性是否都有一些繁重的事情。

最佳答案

我认为重用 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 毫秒,所以除非你每帧创建数千个矩阵,这两种方法都不会对性能产生明显影响。


编辑:

使用 identity 方法将具有两种方法的优点(简单性和性能):

t = getTimer();
for (i = 0; i < N; i++) {
_matrix.identity();
}
trace(getTimer()-t); // 4140

关于actionscript-3 - 重置属性集合或创建新实例是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10085234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com