Как измерить FPS на Android во время разработки приложений
Есть ли способ (возможно, некоторые приложения, хаки, библиотеки) для измерения кадров в секунду (FPS) во время разработки приложений для Android?
Ответы
Ответ 1
Обратите внимание, что производительность будет ужасной при подключении отладчика.
Из моей собственной игры Android время кадра можно измерить с помощью android.os.SystemClock
. То есть вы вызываете SystemClock.elapsedRealtime()
один раз за кадр и вычитаете значение из предыдущего кадра. Поскольку elapsedRealtime()
измеряется в миллисекундах, вычисление частоты кадров так же просто, как 1000.0 / frametime
.
Вы можете разместить свой код в текущем фрейме, используя Choreographer#postFrameCallback
, если таргетинг на уровень API 16 или более новый (Jelly Bean).
Также обратите внимание, что время цикла обычно является лучшим показателем производительности, чем частота кадров. Разница между 1000fps и 1200fps составляет такое же количество раз, как разница между 60fps и 61fps (приблизительно, вероятно, меньше, чем это)
Ответ 2
Вы можете использовать TinyDancer библиотеку.
Просто добавьте код, например:
public class DebugApplication extends Application {
@Override public void onCreate() {
// default config
TinyDancer.create().show(this);
//or customazed config
TinyDancer.create()
.redFlagPercentage(.1f) // set red indicator for 10%
.startingGravity(Gravity.TOP)
.startingXPosition(200)
.startingYPosition(600)
.show(this);
}
}
И вы увидите интерактивное представление с информацией о текущем FPS поверх ваших экранов.
![введите описание изображения здесь]()
Ответ 3
В игровом магазине есть apps, который может измерять FPS сеанса воспроизведения. Посмотрите на GameBench. Он может измерять производительность любой игры во время ее воспроизведения, и вы можете сопоставить капли FPS с тем, что отображалось на экране.
Ответ 4
Я использовал GameBench для FPS-анализа приложения Android (это не игра, я хотел проверить FPS, когда запускается анимация моего приложения).
GameBench фиксирует метрики частоты кадров (FPS), которые являются лучшим объективным индикатором текучести UX.
Мое требование состояло в том, чтобы проверить, что FPS будет 30FPS, когда начинается анимация моего приложения Android.
Я проверил следующее с графиком, предоставленным инструментом GameBench,
- Когда начинается анимация, FPS переместилась с 0 FPS на 30FPS.
- Когда анимация заканчивается, FPS перемещается с 30FPS на 0 FPS
Смотрите снимок экрана.
![введите описание изображения здесь]()
Чтобы использовать этот инструмент, вам необходимо установить приложение Android и панель запуска на рабочем столе.
- Установите приложение GameBench на свое устройство Android.
- Зарегистрируйтесь в GameBench, используя адрес электронной почты и установите настольное приложение.
- Загрузите и установите GameBench Desktop Launcher.
- Подключите устройство к рабочему столу. На вашем устройстве может появиться всплывающее окно с просьбой разрешить USB-отладку
- В Android-приложении GameBench вы можете выбрать приложение (которое я уже установил на планшет) для анализа.
- Затем вы можете записывать кадр в секундах и генерировать отчет (его также можно найти в веб-панели управления, FPS, снимок экрана, производительность, батарея и т.д.).
Ссылка:
В качестве примечания стороны,
Я использовал приложение FPS Meter, но в моем случае это кажется неточным. Получил 29FPS до 31 FPS, когда начинается моя анимация в приложении Android. Ожидаемый FPS - 30FPS.
https://play.google.com/store/apps/details?id=com.ftpie.fpsmeter&hl=en