如何在应用开发期间测量Android上的FPS

Rom*_*nok 25 performance android

有没有办法(可能是一些应用程序,黑客,库)来测量Android应用程序开发期间的每秒帧数(FPS)?

Nic*_*nko 27

您可以使用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);
  }
}
Run Code Online (Sandbox Code Playgroud)

您将在屏幕顶部看到包含当前FPS信息的交互式视图.

在此输入图像描述


Rob*_*ani 16

请注意,附加调试器后性能会很差.

从我自己的Android游戏中,可以测量帧时间android.os.SystemClock.也就是说,SystemClock.elapsedRealtime()每帧调用一次并从前一帧中减去该值.由于elapsedRealtime()以毫秒为单位测量,因此计算帧速率非常简单1000.0 / frametime.

您可以使用Choreographer#postFrameCallbackif level level 16或更高版本(Jelly Bean)将代码发布到正在进行的框架中.

另请注意,帧时间通常比帧率更好地衡量性能.1000fps和1200fps之间的差异与60fps和61fps之间的差异相同(大约可能小于那个)

  • 1000-1200之间的差异约为0.17秒,60和61 fps之间的差异约为0.017秒.所以这绝对是一个巨大的差异. (4认同)

Har*_*ian 6

我已经将GameBench用于Android应用程序的FPS分析(它不是游戏,我想在我的应用程序的动画开始运行时检查FPS).GameBench捕获关键帧速率(FPS)指标,这是衡量用户体验流动性的最佳客观指标.

我的要求是在我的Android应用程序的动画开始时验证FPS是30FPS.

我已经使用GameBench工具提供的Graph报告验证了以下内容,

  • 动画开始时,FPS从0 FPS移动到30FPS.
  • 当动画结束时,FPS从30FPS移动到0 FPS

见截图.

在此输入图像描述

要使用此工具,您必须安装Android应用程序和桌面启动器.

  1. 在Android设备中安装GameBench应用程序.
  2. 使用电子邮件地址注册GameBench并安装桌面应用程序.
  3. 下载并安装GameBench Desktop Launcher.
  4. 将设备与桌面连接.您可能会在设备上收到一个弹出窗口,要求您允许USB调试
  5. 在GameBench Android应用程序中,您可以选择应用程序(我已在平板电脑上安装)进行分析.
  6. 然后,您可以每秒记录帧并生成报告(它也可以在Web仪表板中使用,FPS,屏幕截图,性能,电池等).

参考:

  1. https://play.google.com/store/apps/details?id=com.gamebench.metricscollector
  2. https://www.gamebench.net/
  3. https://docs.gamebench.net/web-dashboard/getting-started

作为旁注,

我也使用过FPS Meter应用程序,但在我的情况下似乎不准确.当Android应用程序中的动画启动时,得到29FPS到31 FPS.预计FPS为30FPS.

https://play.google.com/store/apps/details?id=com.ftpie.fpsmeter&hl=en