Я пишу игру, и, хотя ее производительность хороша в большинстве случаев, она иногда замедляет сканирование. Обычные профайлеры не помогали в этом, так как они фиксируют все время моей игры, и важная информация в лагерейных частях разводится по всем гладким участкам. Существуют ли какие-либо инструменты или библиотеки, которые могут помочь мне изолировать проблему?Профилировщик «Спайк»?
ответ
Вы почти наверняка попадаете в мусорную корзину.
И да, есть инструмент для фиксации этого. Вы хотите CLR Profiler. Это покажет вам, где именно вы выделяете память.
На Xbox сборщик мусора будет работать после каждого выделенного 1 МБ, и он будет медленным. Windows GC намного более прощает, но все равно может вызвать дрожание частоты кадров.
Лучший способ избежать засоривания мусора - не выделять ничего, пока ваша игра запущена. Сделайте свои распределения во время экранов загрузки, где пользователь не заметит.
Я рекомендую читать this post и this post на блоге Шона Харгривза.
Хорошо, я получил некоторые данные из профилировщика, и я жду его загрузки, но пока есть какие-либо другие профилировщики, которые не превратят мою игру в литеральное слайд-шоу? – RCIX
По самой своей природе профилирование немного утомило вашу игру. Но даже при этом он не изменит ваш профиль распределения ... так что вы можете увидеть, где создается мусор. –
@Joel: это правда, но это не «немного»: это происходит от (не больше точек) 60FPS до 1 кадра каждые 3 или около того секунд. Очень трудно контролировать, чтобы получить достойный бег. – RCIX
Вы говорите, что вы идете с рамы с 16 мс до 3000 мс. Таким образом, в долгосрочной перспективе тратится (3000 - 16)/3000 = 99,5% своего времени на то, чего вы не ожидали.
В течение этих 3 секунд, как вы можете узнать, что он делает?
Просто приостановите его несколько раз и проверьте стек вызовов.
Шанс вы не будет видеть, что он делает на каждой паузы составляет 0,5%
Если это в сборщика мусора, это должно подтвердить это. Если он сделает что-то еще, он также скажет вам.
Более правильно, что происходит, игра замедляется до 2-5 кадров в секунду, но мое время обновления не появляется таким образом. Слайд-шоу (несколько секунд между кадрами) происходит только в том случае, если у меня есть профиль памяти. – RCIX
@RCIX: тем не менее, приостановите его, когда он будет медленным, и вы увидите проблему. (5fps = 12-кратное замедление, поэтому вероятность ловить его на каждой паузе составляет 92%.) Люди не привыкли к этой концепции, но если вы попробуете, это станет естественным. Причины, по которым подробно описаны здесь: http://stackoverflow.com/questions/1777556/alternatives-to-gprof/1779343#1779343 –
- 1. AS3 эквивалент спайк-фильтра
- 2. Спайк-кластеризация с пряжей
- 3. Спайк ленивый беспорядок преобразования трансформации
- 4. Спайк с несколькими файловыми кадрами
- 5. Спайк Эквивалент IF Затем ELSE
- 6. встроенный профилировщик
- 7. Профилировщик Windows
- 8. В какой версии MS Word включен «Спайк»?
- 9. Спайк-кластер: автономный режим без HDFS
- 10. Спайк-фильтрация в режиме реального времени C++
- 11. Хороший профилировщик .net4
- 12. лучший профилировщик j2me
- 13. Профилировщик памяти C++
- 14. VS2010 профилировщик/обнаружение утечки
- 15. Профилировщик C++ в Windows
- 16. Достойный профилировщик для Windows?
- 17. Профилировщик Servicestack mini
- 18. PHP + MySQL-профилировщик
- 19. Профилировщик памяти для silverlight
- 20. Статистический профилировщик для PyPy
- 21. Есть ли профилировщик Go?
- 22. MATLAB профилировщик. DetailLevel: mmex?
- 23. Ищите низкопрофильный профилировщик C++
- 24. Как использовать профилировщик?
- 25. Профилировщик SQL Server
- 26. Профилировщик для Sql CE
- 27. высокопроизводительный java-профилировщик
- 28. Профилировщик .NET Memory
- 29. Профилировщик SQL Server
- 30. Профилировщик АО не поддерживается
Это может быть связано с сбором мусора. Вы создаете и выпускаете много объектов? –
На самом деле, я думаю. Я реализовал представление производительности, и то, что происходит, будет использовать мою используемую память, и будет сбрасываться на пару мегабайт каждые пару секунд или около того, и со временем потребление базовой памяти начнет расти. – RCIX