如果在更新/侦听器中使用局部作用域变量以避免每次都创建它,那么将局部作用域变量设为类变量是否更好?

c#

考虑以下代码段,您可以在其中从MyType实例参数获取浮点数(或相应类型):

void myMethod(MyType floatArgument) {
    float myFloat = (float)MyType.Value;
    if (myFloat < 100) {
        //not meaningfull code
    }
}

如果在侦听器中不断调用该方法,或者在物理或图形引擎的更新中不断调用该方法,那么将其设为这样的类变量是否在效率方面会更好?:

private float myFloat
void myMethod(MyType floatArgument) {
    myFloat = (float)MyType.Value;
    if (myFloat < 100) {
            //not meaningfull code
    }
}

该变量仅在本地范围内使用,因此每次都会在堆栈中创建 AFAIK。所以从它创建一个类变量会更快,这样即使该变量的内存也会在堆上并且内存消耗会更高,代码会运行得更快。

我知道对于一个浮点数来说可能没什么大不了的,但是把它当作是很多变量或一个大数据类的实例。

这个推理正确吗?

回答

在我看来,这是一个设计决定。但大多数情况下,您可以简单地创建一个局部作用域变量。为什么?这是每个设计,如果你非常、非常、非常频繁和快速地调用你的方法,那么你可能会遇到记忆问题。另一方面,当您将其移入类范围时,每次创建类时,您都会为永远无法使用的变量寻址内存。所以,这取决于你和你的设计。即使是性能,如果你有一个对象,几乎没有性能问题,而不是保留一点内存来保存它,因为你的对象被设置为引用。

为了更清晰的代码,我建议在这些情况下使用本地范围。


以上是如果在更新/侦听器中使用局部作用域变量以避免每次都创建它,那么将局部作用域变量设为类变量是否更好?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>