每个功能的Android CPU使用情况

时间:2015-10-26 10:08:14

标签: android

目前在我的Android代码中,我正在做的计算每个功能的CPU使用率是 -

double start = System.currentTimeMillis();
double start1 = Debug.threadCpuTimeNanos();
foo();
double end = System.currentTimeMillis();
double end1 = Debug.threadCpuTimeNanos();
double t = (end - start);
double t1 = (end1 - start1)/1000000;
double CPUusage;
            if(t==0){
                CPUusage = 0;
            }else{
                CPUusage = (t1/t) * 100;
            }

我正在做t1 / t来计算CPU使用率。这是计算我的Android代码中每个函数的CPU使用率的正确方法,还是在概念上错了?请求有人指导我。

1 个答案:

答案 0 :(得分:0)

From documentation:

static long currentTimeMillis()
  

返回自1970年1月1日00:00:00.0 UTC以来的当前时间(以毫秒为单位)。

请用长音替换你正在使用的双音色。

虽然long(s)有精度问题,但它们几乎与所使用的变量无关,而且舍入可能足够接近,返回的值可以相互关联使用

此外,您正在比较两个独立的值。尝试当前线程或完整线程时间。

From the Debug documentation:

public static long threadCpuTimeNanos()
  

在API级别1中添加   获取线程CPU使用情况的指示。返回值表示当前线程执行代码或等待某些类型的I / O所花费的时间。时间以纳秒表示,仅与早期调用的结果相比才有意义。请注意,纳秒分辨率并不意味着纳秒精度。在不支持此操作的系统上,调用返回-1。

尝试在相同的Runnable(顺序放置的方法调用)中使用:

long start = Debug.threadCpuTimeNanos();
foo();
long finish = Debug.threadCpuTimeNanos();
long outputValue = finish - start ;
System.out.println("foo() took " + outputValue + " ns.");