【问题标题】:How to measure FPS on Android during app development如何在应用程序开发期间测量 Android 上的 FPS
【发布时间】:2012-02-13 00:59:45
【问题描述】:

在 Android 应用开发过程中,有没有办法(可能是一些应用、hack、库)来测量每秒帧数 (FPS)?

【问题讨论】:

  • 猜你的问题有点太笼统了。您是在谈论您正在使用的一些库存 UI 东西,还是在运行 OpenGL 上下文或类似的东西?在以后的情况下,我只会自己计算帧数。

标签: android performance


【解决方案1】:

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

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

如果针对 API 级别 16 或更高级别(果冻豆),您可以使用 Choreographer#postFrameCallback 将代码发布到正在进行的框架中。

另请注意,帧时间通常比帧速率更能衡量性能。 1000fps 和 1200fps 之间的差异与 60fps 和 61fps 之间的差异所用的时间量相同(大约,但可能比这更少)

【讨论】:

  • 哦,如果您尝试进行插值/动画,您可以使用相同的帧时间来获得基于时间的平滑运动。
  • 1000-1200 之间的差异约为 0.17 秒,60 和 61 fps 之间的差异约为 0.017 秒。所以这绝对是一个巨大的差异。
  • 如您所说,您的经过时间计算以毫秒为单位。那么,帧率计算不应该是1000.0/帧时间吗?我想不清楚你的答案指定了什么单位,但由于 OP 提到每秒帧数,我认为你需要做 1000.0
  • 简单但......你如何获得“框架完成”的通知?
  • @Dr.ABT 对于这个时钟,只需在帧期间的任何时间点调用 elapsedRealtime,您的 FPS 将在第一帧后准确。如果您想学究气,请在主循环之前调用并存储 elapsedRealtime,然后在您使用的任何框架中调用 SwapBuffers 之后的每一帧。
【解决方案2】:

Playstore 中有apps 可以测量游戏会话的 FPS。请看GameBench。它可以在玩任何游戏时测量其性能,并且您可以将 FPS 下降与屏幕上呈现的内容相关联。

【讨论】:

    【解决方案3】:

    您可以使用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 信息的交互式视图。

    【讨论】:

    • 它真的很容易使用,可以在现有代码中快速实现,而且工作起来就像一个魅力。不错!
    • 这是最好的解决方案。非常好的结果!
    【解决方案4】:

    我使用GameBench 对安卓应用程序进行 FPS 分析(它不是游戏,我想在我的应用程序的动画开始运行时检查 FPS)。 GameBench 捕获关键帧速率 (FPS) 指标,这是衡量 UX 流动性的最佳客观指标。

    我的要求是在我的 android 应用程序的动画启动时验证 FPS 为 30FPS。

    我已通过 GameBench 工具提供的图表报告验证了以下内容,

    • 动画开始时,FPS 从 0 FPS 变为 30FPS。
    • 动画结束时,FPS 从 30 FPS 移动到 0 FPS

    看截图。

    要使用此工具,您必须安装一个 android 应用程序和一个桌面启动器。

    1. 在您的 Android 设备中安装 GameBench 应用程序。
    2. 使用电子邮件地址注册 GameBench 并安装桌面应用程序。
    3. 下载并安装 GameBench 桌面启动器。
    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 app,但在我的情况下似乎不准确。当我在 android 应用程序中的动画启动时,得到 29FPS 到 31 FPS。预期 FPS 为 30FPS。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 2011-10-03
      相关资源
      最近更新 更多