Android:使用Traceview和Genymotion进行性能分析时,.trace文件在哪里?

时间:2016-07-18 19:25:03

标签: android android-emulator genymotion android-traceview

我正在阅读这篇关于在你的Android应用程序上运行traceview的文章:https://developer.android.com/studio/profile/traceview.html我假设他们正在谈论的模拟器是android模拟器,而不是我正在使用的Genymotion模拟器。 / p>

它表示要将跟踪文件从模拟器中拉出到主机上,您只需运行以下命令:

adb pull /sdcard/startup.trace /tmp

我在我的Genymotion模拟器上运行它并且找不到该文件。然后,我使用Android设备监视器查看设备内部的文件,但没有在该位置保存名为startup.trace的文件。

我在我的代码中这样做了:

public class MyApplication extends MultiDexApplication {

    public void onCreate() {
        super.onCreate();
        Debug.startMethodTracing("startup"); 
    }
  }

然后我在我的活动onResume方法中停止了测量,以测量我的应用程序的启动时间:

@Override
protected void onResume() {
    super.onResume();
    Debug.stopMethodTracing();
}

我希望traceview测量我的启动时间,但不知道文件在Genymotion模拟器上的保存位置。任何人都可以帮我保存文件的位置吗?

2 个答案:

答案 0 :(得分:7)

我无法从上面的示例应用(或任何应用)找到.trace文件。因为.trace文件不在:

/sdcard/<myTraceFile>.trace

我确实使用 find 命令来查找跟踪文件的位置,如下所示: -

$adb shell
$cd /sdcard
$find |grep .trace

我的文件位置在:

./Android/data/test.com.trackstartuptime/files/startup.trace

对于上面的示例应用。现在将此位置用于 adb pull : -

$adb pull /sdcard/Android/data/test.com.trackstartuptime/files/startup.trace <my_location>

答案 1 :(得分:1)

因此,在使用简单的Android应用程序测试后,它实际上按计划运行。

我创建了一个小型回购来证明这一点:

https://github.com/Winghin2517/TraceviewTest.git

您可以下载它,在genymotion模拟器上运行它,然后在&#34;终端&#34; Android Studios的标签如下:

adb pull /sdcard/startup.trace /tmp

它将从Genymotion中提取跟踪文件。然后你需要打开DDMS并说出&#34; File&#34; - &GT; &#34;开&#34;并打开startup.trace文件。

我创建的Android应用程序演示了将1000条消息注销到控制台所需的时间。你可以看到皮肤颜色条代表android用来调用testCount方法的时间:

enter image description here

以下是我的结果:

enter image description here

我的方法testCount需要10毫秒才能完成。

Log.e方法的隐居调用也很有意义,因为我的代码中的循环是针对log.e方法的1000次调用。

包含CPU时间是包含的cpu时间。它是函数本身花费的时间总和,以及它调用的所有函数的时间总和。

Excl CPU时间是独占的cpu时间。它只是在函数本身花费的时间。您会注意到它始终与&#34;包含时间&#34; &#34;自我&#34;子。