Рассчитать частоту кадров (кадров в секунду) для приложения iphone - PullRequest
2 голосов
/ 15 ноября 2009

Я использую приложение opengl es iphone. Как наиболее точно рассчитать частоту кадров моего приложения для настройки производительности?

Ответы [ 6 ]

5 голосов
/ 25 октября 2010

Я думаю, что вы хотите, это:

// fps calculation
static int m_nFps; // current FPS
static CFTimeInterval lastFrameStartTime; 
static int m_nAverageFps; // the average FPS over 15 frames
static int m_nAverageFpsCounter;
static int m_nAverageFpsSum;
static UInt8* m_pRGBimage;

static void calcFps()
{
    CFTimeInterval thisFrameStartTime = CFAbsoluteTimeGetCurrent();
    float deltaTimeInSeconds = thisFrameStartTime - lastFrameStartTime;
    m_nFps = (deltaTimeInSeconds == 0) ? 0: 1 / (deltaTimeInSeconds);

    m_nAverageFpsCounter++;
    m_nAverageFpsSum+=m_nFps;
    if (m_nAverageFpsCounter >= 15) // calculate average FPS over 15 frames
    {
        m_nAverageFps = m_nAverageFpsSum/m_nAverageFpsCounter;
        m_nAverageFpsCounter = 0;
        m_nAverageFpsSum = 0;
    }


    lastFrameStartTime = thisFrameStartTime;
}

С уважением, Асаф Пинхасси.

4 голосов
/ 15 ноября 2009

Попробуйте запустить:

Run -> Run With Performance Tool -> OpenGL ES.

Вы должны запускать этот инструмент при подключении к устройству (что вам в любом случае явно необходимо для настройки производительности ...)

Он дает вам Core Animation FPS, который (возможно) может не соответствовать тому, что вы ищете, но он может отображать ряд других полезных статистических данных, которые также могут помочь вам оптимизировать.

1 голос
/ 16 ноября 2009

Когда вы достигнете конца своего кода рисования, увеличьте счетчик.

Настройка огня NSTimer каждую секунду, отображение счетчика и сброс его на ноль.

1 голос
/ 15 ноября 2009

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

Разделите тики в секунду на время, которое вы только что измерили, и у вас будет FPS.

0 голосов
/ 01 декабря 2009

Измерять FPS во время разработки практически бессмысленно. Измерьте необходимое время рендеринга!

Таким образом, вы получите более четкое представление о том, как ваши изменения влияют на производительность. Обычно очень хорошая идея разделить время рендеринга на значимые фрагменты, например "рендер фон", "рендеринг уровня", "рендеринг мобов" и т. д.

Если вы все еще хотите использовать FPS, мой личный фаворит - версия Johns NSTimer, даже если она не показывает всплески.

0 голосов
/ 15 ноября 2009

Проверьте эту резьбу. Там есть несколько очень полезных ссылок. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...