如何估计Android中的方法CPU时间?

问题描述

我知道这里有很多听起来相似的问题,但我已经看过很多问题,但我没有找到明确的答案,如果我想做什么是可能的。

我有一个应用程序,它使用 OpenCV 实时处理来自相机的图像。处理由几个步骤组成,包含在单独的方法中,如过滤、阈值处理等。我想估计每种方法使用的 cpu 时间,以估计它们的能耗。我知道我可以做类似的事情

public long filter(Mat input) { 
   long time = System.elapsedRealtime();
   
   ...

   return System.elapsedRealtime() - time;
}
   

获取每个方法调用的执行时间,但我认为因为我想将其与能耗相关联,所以它不够精确。有没有办法获得当前进程的总 cpu 时间? (我知道在 Android Studio 的 Energy Profiler 中我可以跟踪方法cpu 时间,但我想知道这是否可以在运行时以编程方式实现)

解决方法

您是否正在寻找这样的东西:

public long filter(Mat input) { 
   long start = System.nanoTime();
   
   // code you're measuring goes here

   long duration = System.nanoTime() - start;
   // log this duration somehow?

   return result;
}