25
Сен

Perfomance Counters

   Posted by: admin   in MagicEngine, Новости

Вообще это вещь нужная всегда. Былобы неплохо всегда иметь возможность получить информацию о производительности отдельных модулей, сколько вызовов чеголибо было произведено, чтобы можно было легко находить узкие места реализации, тормозящие все приложение.

Но сейчас пойдет речь не об общем варианте счетчика, а об одном специализированном: счетчик  FPS.

К любому PerfomanceCounter, который планируется оставить в релизной версии, всегда следует применять требование быстродействия, тобишь он не должен работать медленно. Но вот критерий медленно слегка условен)

На данный момент думаю реализовать так: считать время за которое отрисуется  150 кадров. При скорости в 30 фпс это дает обновление  раз в 5 секунд.

Еще была идея считать время отрисовки 1 кадра, но по моему тут будет слишком большой оверхед,  хотя такой счетчик былбы удобен, если вести статистику по последним N кадрам — для определения моментов, в которые произошло «замирание».

Итак счетчик FPS:

Будет содержать 1 параметр: кол-во кадров для которых надо рассчитать время и 1 слот — новый кадр. Строить его надо явно на основе уже имеющегося scorefield, который переименовать в counter )

Tags:

This entry was posted on Четверг, Сентябрь 25th, 2008 at 09:47 and is filed under MagicEngine, Новости. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

One comment

Вудруф
 1 

ИМХО, производительность отдельных модулей лучше проверяется профилированием.
Другое дело, если ты хочешь иметь статистику по производительности в релизной версии. Только такое нужно для серверной части, но совсем не обязательно для клиента или single player игры.
Замер времени отрисовки кадра — не такая уж и медленная операция по сравнению с самой прорисовкой. Тут только один нюанс — показывать скорость отрисовки последнего кадра или некоторую усреднённую, где у последнего будет больший вес. Т.е. либо мы получаем постоянно скачущее число, либо более-менее плавно изменяющееся.

admin Reply:

На самом деле профайлеры, о которых я знаю — показывают среднюю статистику, тоесть с их помощью нельзя определить момент когда произошло кратковременное замирание, именно поэтому делают свои счетчики и профайлеры в играх.
Замер времени отрисовки кадра это еще и рендеринг текста и выполняется это примерно 1000 раз в секунду (ну у меня вот 1200 фпс). Рендеринг текста вещь довольно медленная и к томуже gettimeofday есть не на всех платформах (в частности отсутствует в windows)

Октябрь 4th, 2008 at 10:36