繁体   English   中英

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

[英]Android: Where is the .trace file when Profiling with Traceview and Genymotion?

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

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

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模拟器上的保存位置。 有人可以协助我保存文件吗?

我无法从上述示例应用程序(或任何应用程序)中找到.trace文件。 因为.trace文件不在以下位置:

/sdcard/<myTraceFile>.trace

command to find location of my trace file as follows:- 我使用命令欺骗了我,找到了我的跟踪文件的位置,如下所示:

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

我的文件位置在:

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

对于上述示例应用程序。 as :- 现在使用此位置进行

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

因此,在使用简单的android应用进行测试后,它实际上可以按计划进行。

我创建了一个小仓库来证明这一点:

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

您可以下载它,在genymotion模拟器上运行它,然后在Android Studios的“终端”标签中键入以下内容:

adb pull /sdcard/startup.trace /tmp

它将从Genymotion中提取跟踪文件。 然后,您将需要打开DDMS,并说“文件”->“打开”,然后打开startup.trace文件。

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

在此处输入图片说明

这是我的结果:

在此处输入图片说明

我的方法testCount用了10毫秒完成。

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

包含CPU时间是包含性CPU时间。 它是在函数本身中花费的时间之和,以及它调用的所有函数的时间之和。

不包括CPU时间是独占的CPU时间。 这只是花在函数本身上的时间。 您会注意到,它总是与“自”子的“包含时间”相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM