每次创建一个新对象或保留一个对象

Create a new object every time or keep a single one

本文关键字:对象 保留 一个对象 新对象 一个 创建      更新时间:2023-10-16

我们使用基元类型而不考虑构造函数和析构函数。可能正因为如此,它们中的大多数都存储在堆栈中。对于基元类型,我们也使用类似于float3struct。我们也可以在课堂上做同样的事情。在函数开始时,创建一个新实例,使用它,并在函数结束时释放内存。

如果我们在类级别声明了一个实例变量,那么该变量将一直存在,直到释放了包含它的类,而不是使用局部变量。这增加了稳定的内存使用率。此外,应该有一些更新方法转发到此实例。例如,更改容器大小可能会影响内容,因此应该将新的大小转发给它们。

类应该如何保持对变量的引用,以避免多次创建变量?

我知道这与调用构造函数(或析构函数)的次数有关,但我正在寻找一个通用的解决方案。例如,如果类只包含像x、y、z这样的基元,并且它们是不可变的,则应该始终构造它们等等。

一种决定选择哪种方式的方法,使float3不可变或使其x、y和z可修改。

如果使用基元类型,可能没有区别。

如果你使用一些更"复杂"类型的对象,在重用它之前,你可能必须将其重置为已知状态。这可能需要至少与创建新对象一样多的代码。它还会使代码复杂化,这从来都不是一个优势。

除非您注意到代码中有一个特定的瓶颈,否则您应该尽量使其简单易读。除非万不得已,否则不要把事情复杂化。

通常您会希望最小化变量的范围以提高性能。而且,在Java中,相对于它们的包装类等价物,总是更喜欢基元。