我正在開發一個應用程序(XNA遊戲)的XBOX,這是一個非常簡單的應用程序。首頁包含具有移動gif圖像的圖塊。這些gif圖像實際上都是png圖像,每個圖塊都會加載一次,然後放入一個數組中。然後,使用定義的延遲,播放這些圖像(使用延時遞增的計數器)。Xbox Xbox框架當GC踢
這一切都很好,但是,我注意到在GIF圖像的移動過程中每x秒都會有一些小的延遲。然後我就開始添加一些標杆的東西:
http://gyazo.com/f5fe0da3ff81bd45c0c52d963feb91d8
正如你所看到的,FPS是這樣一個簡單的程序相當低(這是在調試,從Xbox itsself運行應用程序時,我得到平均62fps)。 2個重要設置: Graphics.SynchronizeWithVerticalRetrace = false; IsFixedTimeStep = false;
將isFixedTimeStep更改爲true會增加延遲。設置瓷磚有旋轉的輪子,並且您可以每隔x秒看到一次輪子。 SynchronizeWVR的計數也會增加滯後。
我注意到滯後和垃圾收集踢,每次它踢的那一刻之間的連接,有一個滯後...
不介意MAX HMU(堆內存使用量),作爲這是需要開始的金額,平均值更加現實。
下面是從性能監視器的另一個屏幕,但我不明白,從這個工具,我用它第一次了...希望它能幫助:
http://gyazo.com/f70a3d400657ac61e6e9f2caaaf17587
爲Xbox開發垃圾收集效率低下是一個衆所周知的問題。在Google中搜索將爲您提供大量信息和解決方案,它們是最常用的緩存對象,而不是重新創建它們,以及更復雜的版本,創建池以重用對象。 – Elideb 2012-02-21 15:41:38
@Mortana我讀過這個問題的答案和評論的一個好地方開始瞭解GC最佳做法的360 http://stackoverflow.com/questions/9142918/poor-performance-on-360-and- WP7/9150698#9150698 – 2012-02-21 20:54:45