2012-09-02 665 views
0

我们使用基本类型而不考虑构造函数和析构函数。这可能是因为它们中的大多数都存储在堆栈中。对于原始类型,我们也使用struct,如float3。我们也可以为班级做同样的事情。在函数开始时,创建一个新实例,使用它并在函数结束时释放内存。每次创建一个新对象或保留一个对象

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

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

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

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

+1

我收集你使用一台机器来翻译你的问题(从土耳其语到英语)。请显示一些描述您的问题的Java或C++源代码,并提供您想要完成的更多细节。否则,很难理解你的意思。 –

+1

您的问题被标记为[C++]和[java]。你使用哪种语言?答案可能会有所不同,具体取决于所使用的语言。 –

+1

@ phoad - 过早优化是邪恶的。分析性能瓶颈,然后尝试根据需要优化对象创建。有特定的模式来帮助特定的需求。例如,http://en.wikipedia.org/wiki/Flyweight_pattern,将通过尽可能共享数据来帮助减少内存。 – Jayan

回答

1

如果使用原始类型,则可能没有区别。

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

除非您注意到代码中存在特定的瓶颈,否则您应该尽量保持它简单易读。除非你绝对需要,否则不要让事情复杂化。

1

通常情况下,您需要最小化变量的范围以提高性能。另外,在Java中,始终更喜欢原始类型到它们的包装类等价物。

相关问题