在Android中测量执行时间的最佳方法是什么?

测量Android代码片段执行时间的最佳方法是什么?

我有一段代码之前和之后,我想要放置时间戳找出它的执行时间(例如一个在onCreate()和另一个在onDestroy()方法的活动)。

我尝试了Time.toMillies(false) ,但是它只返回秒给我(在最后常数000 )。 我也尝试了两个java函数: System.currentTimeMillis()System.nanoTime() 。 第一个返回的时间是毫秒,第二个不是。

测量执行时间和获得高精度的最好方法是什么?

Solutions Collecting From Web of "在Android中测量执行时间的最佳方法是什么?"

怎么样TimingLogger

从TimingLogger文档:

 TimingLogger timings = new TimingLogger(YOUR_TAG, "methodA"); // ... do some work A ... timings.addSplit("work A"); // ... do some work B ... timings.addSplit("work B"); // ... do some work C ... timings.addSplit("work C"); timings.dumpToLog(); 

并且转储将如下所示:

  D/TAG ( 3459): methodA: begin D/TAG ( 3459): methodA: 9 ms, work A D/TAG ( 3459): methodA: 1 ms, work B D/TAG ( 3459): methodA: 6 ms, work C D/TAG ( 3459): methodA: end, 16 ms 

不要忘记启用您的标记: adb shell setprop log.tag.YOUR_TAG VERBOSE

测量执行时间的最好方法是什么?

System.nanoTime()可能是一个不错的select。 例如,杰克·沃顿(Jake Wharton)正在使用Hugo 。

并获得良好的精度

这不是严格可行的,因为您的方法正在执行时,设备上可能会发生任何事情。 这些外部因素会影响你的时间测量,通过偷走CPU时间,捆绑I / O通道等。你需要平均你的testing跨越几次运行,试图平均这些外部因素,准确性/精度将受到影响结果。

而且,正如Marcin Orlowski所指出的那样,要真正弄清楚为什么要花费一定的时间,请使用Traceview。

你问的是称为分析 ,也有工具来帮助你在Android上。 请参阅在官方开发者网站上使用Traceview和dmtracedump进行性能分析 。