2012-09-02 288 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中,始終更喜歡原始類型到它們的包裝類等價物。

相關問題