每次创建一个新对象或保留一个对象
Create a new object every time or keep a single one
我们使用基元类型而不考虑构造函数和析构函数。可能正因为如此,它们中的大多数都存储在堆栈中。对于基元类型,我们也使用类似于float3
的struct
。我们也可以在课堂上做同样的事情。在函数开始时,创建一个新实例,使用它,并在函数结束时释放内存。
如果我们在类级别声明了一个实例变量,那么该变量将一直存在,直到释放了包含它的类,而不是使用局部变量。这增加了稳定的内存使用率。此外,应该有一些更新方法转发到此实例。例如,更改容器大小可能会影响内容,因此应该将新的大小转发给它们。
类应该如何保持对变量的引用,以避免多次创建变量?
我知道这与调用构造函数(或析构函数)的次数有关,但我正在寻找一个通用的解决方案。例如,如果类只包含像x、y、z这样的基元,并且它们是不可变的,则应该始终构造它们等等。
一种决定选择哪种方式的方法,使float3
不可变或使其x、y和z可修改。
如果使用基元类型,可能没有区别。
如果你使用一些更"复杂"类型的对象,在重用它之前,你可能必须将其重置为已知状态。这可能需要至少与创建新对象一样多的代码。它还会使代码复杂化,这从来都不是一个优势。
除非您注意到代码中有一个特定的瓶颈,否则您应该尽量使其简单易读。除非万不得已,否则不要把事情复杂化。
通常您会希望最小化变量的范围以提高性能。而且,在Java中,相对于它们的包装类等价物,总是更喜欢基元。
相关文章:
- 保留计时器集合(对象与指针)的最佳方法
- 更改保留指向其字段的原始指针的对象地址
- 保留对象成员变量的本地副本
- 如何为同一类对象的成员函数保留单独的变量副本?
- 有没有办法在对象上保留弱引用并控制其生存期
- 在C 中进行可选参考,保留对象寿命
- C++对象保留?
- 是否应将移出对象保留为"safe"状态?
- 返回类型,或如何保留对象指针的类型
- 如何获得一个窗口,以便在调整C++大小时保留绘制的对象
- 实例变量列表中的对象未被保留?指针问题
- 保留一个reference_wrapper对象的向量,这是可能的
- 每次创建一个新对象或保留一个对象
- 如何在堆栈上为非默认构造对象保留空间
- 将临时对象保留在寄存器上以避免虚拟机中的额外存储/加载
- std::vector 不保留在实现中实例化的推回对象
- 如何保留指向插入到集合中然后推送到向量中的对象的指针
- 如何在不复制和保留 std::string 对象的情况下获得 C++ std::string 字符数据的所有权
- C++对象中保留 lambda 表达式
- 在c++ 11中,如何调用new并为对象保留足够的内存?