Как измерить 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