![](/img/trans.png)
[英]In Android, how to measure the execution time overhead programmatically?
[英]Android how to measure FPS of a View or Application programmatically
我想測量使用 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
。 像這樣:
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
以毫秒為單位計算。 以毫秒為單位的一秒是1000
毫秒。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.