2014-03-01 24 views
0

我開始進行Android遊戲開發,我正在使用的其中一個庫是universal-tween-engine。作者做出了很多基於性能優化的設計決策,以至於API的某些方面犧牲了可用性。我應該贊成在Android上使用新對象的對象池嗎?

我正在考慮將項目分叉到GitHub倉庫並清理API,但我不知道Android性能的細節。在基於標準Hotspot的JVM上,我不會太擔心對象實例化和垃圾收集的開銷,因爲該平臺已經優化了這些東西,我認爲這個庫的池化行爲是過早的優化,但對於Android而言,我沒有想法....

與熱點相比,Android上的對象創建和垃圾收集(薑餅 - > KitKat)的性能特點是什麼?如果我將重複創建同一類的新實例(但狀態不同),是否值得將這些實例集中起來?

回答

1

與桌面Java應用程序不同,Android應用程序當前運行在Dalvik虛擬機的頂部。

在移動設備上垃圾收集相對昂貴,您希望避免在性能敏感的代碼路徑中進行對象分配,垃圾收集將數百毫秒暫停應用程序並不罕見 - 您想要的任何遊戲的最後一件事情或當用戶滾動你的列表視圖時。

這當然也取決於設備,Android限制了應用程序可以在高端設備上使用的內存量,除了硬件的性能增益之外,您的應用通常還允許使用更多的內存,而不是在低端設備上運行。

移動設備已經走過了很長的一段路,但即使使用高端設備,您仍然不能忽視移動設備上的內存管理。

我建議你更好地瞭解在Android上的性能/內存(和一般的移動設備)的第一次,所以當你做性能變化到庫中,你確信你正在改善(和經常測量!)。一個好的開始是官方Best Practices for Performace

相關問題