2011-10-06 107 views
1

我正在開發一款使用box2d物理的遊戲,並且我的beta測試人員在屏幕上出現大量對象時報告了馬虎的表現。我幾乎總是掛着應用程序的DEBUG版本,並且一直保持穩定的60 fps。經過幾乎所有的構建設置擺弄之後,我注意到在DEBUG構建模式下,一個標記ONLY_ACTIVE_ARCHYES,而在RELEASE中是NO。在僅爲ARMv6構建RELEASE版本並將其安裝在支持ARMv7的設備上後,我們獲得了穩定的60 fps。試圖構建ARMv7(Thumb)會再次表現出sl((30-50%)的性能。在非物理模擬環境中也可以看到輕微的性能損失。測試設備是iPod Touch 4,iPhone 4和iPhone 3GS。你能分享你的意見,爲什麼可能是這樣嗎?我不知道:)Cocos2d + Box2d性能ARMv6 vs ARMv7

回答

0

首先:始終只在發佈版本中衡量性能。調試版本包括斷言,日誌記錄以及可能會影響性能結果的其他因素,通常情況更糟。

如果我明白了這一點,您會說所有設備上的ARMv6代碼運行平滑(60 fps),而啓用Thumb指令的ARMv7版本則爲您提供了「馬虎」式的性能。我認爲「30-50%更差」意味着在所有3個提到的設備上,對於ARMv7代碼,大約30-45 fps。這聽起來似乎沒有可比較的測試場景,即遊戲從相同位置處的相同數量的對象開始,以便能夠準確地比較設備之間的性能。如果您通過玩遊戲手動重現「大量物體」場景,則很難評估真實的性能差異。

由於您已經啓用了ARMv7和拇指指令,因此您應該獲得良好性能,特別是在第4代設備上。您可能想嘗試禁用拇指並重新測試。您還應該檢查發佈版本的優化級別,它應該是:最快,最小。一般來說,檢查任何只影響ARMv6或ARMv7的條目的構建設置(這些條目標有箭頭以展開它們)。

您還應該驗證您的性能問題實際上與物理有關。 「很多對象」意味着屏幕上還有「很多精靈」。如果它們不是精靈批處理,則性能可以下降得更快。如果它們也是部分透明,旋轉或縮放的,那麼沒有精細劃分的性能會更差。

+0

謝謝......如果遊戲在DEBUG中以60 fps的常量工作,它應該在RELEASE中運行相同或更快的權利,這就是爲什麼我沒有在發佈中不做測試。實際上我確切知道在任何給定的點上我繪製/模擬了多少物體。我已經嘗試用除了ARMv6/ARMv7(Thumb)以外的完全相同的構建設置(最快,最小包括)來構建遊戲,DEBUG和RELEASE。當我使用ARMv6構建它時,它的運行速度仍然很快,但我沒有看到明顯的原因。但是你是對的,當我完成這個項目並擴展這個問題時,我會做一個測試。 –

+0

通常,發佈版本的運行速度至少與調試版本一樣快或更快。但偶爾會有一些奇怪的情況使得僅在發佈版本中測試性能值得。畢竟,這就是你的用戶將會玩的東西。 – LearnCocos2D

2

我注意到了同樣的問題。 一些測試後,我認識到,性能得到更好的,如果我設置如下rendermode:

<renderMode>gpu</renderMode> 

我測試了這對星系S2。到目前爲止,我不知道如何影響其他設備...