Измерение производительности OpenGL ES по частоте кадров может быть не лучшим подходом . Я сам занялся записью времени кадра, что, кажется, дает более точную оценку моей общей производительности рендеринга. Это просто для инкапсуляции вашего рендеринга в нечто вроде
CFTimeInterval previousTimestamp = CFAbsoluteTimeGetCurrent();
// Do your OpenGL ES frame rendering here, as well as presenting the onscreen render buffer
CFTimeInterval frameDuration = CFAbsoluteTimeGetCurrent() - previousTimestamp;
NSLog(@"Frame duration: %f ms", frameDuration * 1000.0);
для получения времени рендеринга. Если вы хотите, ваша мгновенная частота смены кадров равна frameDuration
в приведенном выше коде.
Будьте внимательны, чтобы рассчитать время рендеринга всего кадра, поскольку отложенный рендерер на основе плиток в iOS и других мобильных устройствах может скрывать истинную стоимость отдельных операций рендеринга, задерживая их до того, как кадр будет выведен на экран.
Однако, если вы хотите получить менее точную частоту кадров из Инструментов, вы можете сделать это, используя инструмент OpenGL ES Driver, который сообщает Core Animation Frames Per Second как одну из его зарегистрированных статистик: