我想测量某个使用TextureView的Android View的FPS(刷新率)。要做到这一点,我需要一些以编程方式测量FPS的方法(例如,不使用ADB.exe和不使用第三方应用程序或工具)。
我看到了这个问题,但它没有回答在哪里记录帧时间。
当屏幕刷新或合成时,Android中是否有API来获取事件?使用这种方法,测量帧时间并因此计算FPS将相对简单。
CPU使用情况也有同样的问题。感谢任何或所有用于衡量性能的API!
看起来TinyDancer可以随心所欲:
//you can add a callback to get frame times and the calculated
//number of dropped frames within that window
TinyDancer.create()
.addFrameDataCallback(new FrameDataCallback() {
@Override
public void doFrame(long previousFrameNS, long currentFrameNS, int droppedFrames) {
//collect your stats here
}
})
.show(this);
}
如果您需要了解CPU使用情况,可以始终使用top
。Smth是这样的:
root@android:/data # top -n 1 -s cpu
User 28%, System 29%, IOW 0%, IRQ 0%
User 189 + Nice 162 + Sys 355 + Idle 509 + IOW 0 + IRQ 0 + SIRQ 2 = 1217
PID PR CPU% S #THR VSS RSS PCY UID Name
31096 0 20% S 20 463368K 78884K fg u0_i77 com.android.chrome:sandboxed_process0
29042 1 11% S 54 451036K 84876K fg u0_a10 com.android.chrome
130 2 9% S 25 79228K 37136K fg system /system/bin/surfaceflinger
...
...
...
从Android应用程序调用系统命令并不困难。
SystemClock.elapsedRealtime
是衡量FPS的关键。方法很简单:long YOUR_VARIABLE = SystemClock.elapsedRealtime / 1000.0
该代码计算屏幕上显示的帧。elapsedRealtime
以毫秒为单位计算。以毫秒为单位的1秒是1000
毫秒。