gpt4 book ai didi

c# - 如果在更新/监听器中使用局部范围变量以避免每次都创建它,那么将局部范围变量设为类变量是否更好?

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

考虑以下代码片段,您可以从 MyType 实例参数中获取 float (或相应的类型):

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
}
}

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

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

这个推理正确吗?

最佳答案

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

为了代码更简洁,我建议在这些情况下使用局部作用域。

关于c# - 如果在更新/监听器中使用局部范围变量以避免每次都创建它,那么将局部范围变量设为类变量是否更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67021675/

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