【发布时间】:2014-03-08 07:35:25
【问题描述】:
我正在编写一个 Android 应用程序,它会在安装它的设备上提供统计信息,并且想知道是否可以确定以下指标。
CPU 为特定进程服务所花费的时间。我正在测试的设备有一个 4 核处理器,无论天气如何,我都想花时间处理相关进程是在前台还是后台。使用 top 可以得到进程占用的 CPU 百分比,有没有办法确定时间(以秒或时钟周期为单位)?
谢谢
【问题讨论】:
标签: android performance cpu-usage
我正在编写一个 Android 应用程序,它会在安装它的设备上提供统计信息,并且想知道是否可以确定以下指标。
CPU 为特定进程服务所花费的时间。我正在测试的设备有一个 4 核处理器,无论天气如何,我都想花时间处理相关进程是在前台还是后台。使用 top 可以得到进程占用的 CPU 百分比,有没有办法确定时间(以秒或时钟周期为单位)?
谢谢
【问题讨论】:
标签: android performance cpu-usage
看看ps 命令。它具有格式说明符,即提供 CPU 和挂起时间的字段/列。
例如 Android 的 cputime:
ps -x
will yield something that looks like this
u0_a16 18214 17002 743644 18104 ffffffff 00000000 S com.android.location.fused (u:10, s:13)
其中 u:10 和 s:13 代表 CPU 在进程上花费的时间(来源:http://codeseekah.com/2012/10/21/android-shell-tricks-ps/)
我制作了一个用于收集系统统计信息的 Linux 脚本,您可以在此处查看:https://gist.github.com/izmailoff/8923008。
【讨论】:
gprof 实际上可能是一个很好的工具,如果你可以使用的话。
它只对 CPU 时间进行采样,并且它的采样通常是每 10 毫秒一次。
所以,看看它得到了多少样本,不管它们属于什么函数,乘以 10,这就是你的程序使用了多少毫秒。
【讨论】: