【发布时间】:2012-02-13 00:59:45
【问题描述】:
在 Android 应用开发过程中,有没有办法(可能是一些应用、hack、库)来测量每秒帧数 (FPS)?
【问题讨论】:
-
猜你的问题有点太笼统了。您是在谈论您正在使用的一些库存 UI 东西,还是在运行 OpenGL 上下文或类似的东西?在以后的情况下,我只会自己计算帧数。
标签: android performance
在 Android 应用开发过程中,有没有办法(可能是一些应用、hack、库)来测量每秒帧数 (FPS)?
【问题讨论】:
标签: android performance
请注意,附加调试器后性能会很差。
在我自己的 Android 游戏中,可以使用android.os.SystemClock 测量帧时间。也就是说,您每帧调用一次SystemClock.elapsedRealtime() 并从前一帧中减去该值。由于elapsedRealtime() 以毫秒为单位,因此计算帧率就像1000.0 / frametime 一样简单。
如果针对 API 级别 16 或更高级别(果冻豆),您可以使用 Choreographer#postFrameCallback 将代码发布到正在进行的框架中。
另请注意,帧时间通常比帧速率更能衡量性能。 1000fps 和 1200fps 之间的差异与 60fps 和 61fps 之间的差异所用的时间量相同(大约,但可能比这更少)
【讨论】:
Playstore 中有apps 可以测量游戏会话的 FPS。请看GameBench。它可以在玩任何游戏时测量其性能,并且您可以将 FPS 下降与屏幕上呈现的内容相关联。
【讨论】:
您可以使用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 信息的交互式视图。
【讨论】:
我使用GameBench 对安卓应用程序进行 FPS 分析(它不是游戏,我想在我的应用程序的动画开始运行时检查 FPS)。 GameBench 捕获关键帧速率 (FPS) 指标,这是衡量 UX 流动性的最佳客观指标。
我的要求是在我的 android 应用程序的动画启动时验证 FPS 为 30FPS。
我已通过 GameBench 工具提供的图表报告验证了以下内容,
看截图。
要使用此工具,您必须安装一个 android 应用程序和一个桌面启动器。
参考:
顺便说一句,
我也使用过FPS Meter app,但在我的情况下似乎不准确。当我在 android 应用程序中的动画启动时,得到 29FPS 到 31 FPS。预期 FPS 为 30FPS。
https://play.google.com/store/apps/details?id=com.ftpie.fpsmeter&hl=en
【讨论】: