Профилировщик "Спайк"? - PullRequest
       10

Профилировщик "Спайк"?

2 голосов
/ 20 августа 2010

Я пишу игру, и хотя ее производительность в большинстве случаев хорошая, иногда она замедляется до ползучести. Нормальные профилировщики не помогли в этом, поскольку они записывают все время, в течение которого моя игра запущена, и важная информация в отстающих частях размыта по всем гладким участкам. Существуют ли какие-либо инструменты или библиотеки, которые могут помочь мне изолировать проблему?

Ответы [ 2 ]

3 голосов
/ 20 августа 2010

Вы почти наверняка попали под сборку мусора.

И да, есть инструмент для исправления этого.Вы хотите CLR Profiler .Это покажет вам, где именно вы выделяете память.

В Xbox сборщик мусора будет запускаться после каждого выделенного 1 МБ, и он будет медленным.Windows GC гораздо более простителен, но все же может вызывать дрожание частоты кадров.

Лучший способ избежать заиканий в сборке мусора - не выделять что-либо во время игры.Делайте ваши выделения во время загрузки экранов, где пользователь не заметит.

Я рекомендую прочитать этот пост и этот пост в блоге Шона Харгривза.

1 голос
/ 21 августа 2010

Вы говорите, что переходите от кадра, занимающего от 16 до 3000 мс.Таким образом, в длинном кадре он тратит (3000 - 16) / 3000 = 99,5% своего времени на то, что вы не ожидали.

В течение этих 3 секунд, как вы можете узнать, что он делает?

Просто сделайте паузу несколько раз и проверьте стек вызовов.

Вероятность того, что вы не увидите, что он делает в каждой паузе, составляет 0,5%

Если он находится в сборщике мусора, это должно подтвердить это.Если он делает что-то еще, он также скажет вам.

...