当前位置:首页 > 时尚生活

trace Android - 性能优化

前言

性能优化过程分为两部分:

发现性能瓶颈

开发解决性能问题的方案

性能问题的解决方案需要具体分析,没有完全固定的路径,更多的是靠经验的积累,本文不涉及。但是有一种固定的方法可以找到性能瓶颈。本文主要介绍如何发现性能瓶颈。

如何发现性能瓶颈

Traceview是一个常用的性能测试工具,集成在Android设备监控器中。从Android Studio3.0开始,Android设备监视器被放弃,取而代之的是Android Profiler,它提供三个功能:内存Prodiler、CPU Profiler和网络Prodiler。

MAT或LeakCanary常用于内存优化(包括内存泄漏),Memory Profiler相当于将MAT的简化功能集成到AS中。另一方面,在性能优化方面,CPU Profiler相当于将traceview的功能集成到AS中。

所以,如果使用AS3.0之前的版本,可以使用traceview,而如果使用AS3.0之后的版本,除了traceview,还可以选择CPU Profiler。

如果想跟踪系统进程的详细数据,解决帧引起的接口干扰,可以使用systrace,本文不涉及。

Traceview用法

要使用traceview,您需要首先插入调试类。当应用程序执行插入的代码时,它会自动在手机sd卡中生成一个. trace文件,然后使用traceview或as(3.0以上版本)打开该文件。

一、插桩

插接需要使用Debug类,并且会生成。因此您必须首先确保您的应用程序具有WRITE_EXTERNAL_STORAGE的权限。

在要跟踪的代码逻辑的开头和结尾插入标记:

//使用您提供的名称开始记录跟踪日志。例如

//下面的代码告诉系统开始将. trace文件记录到

//名为“sample.trace”的设备。

Debug.startMethodTracing("示例");

...

//系统开始缓冲生成的跟踪数据,直到您的

//应用程序调用stopMethodTracing(),并在此时写入

//将缓冲的数据输出到输出文件。

debug . StopMethodTracking();

生成的`。trace ` file会保存在一个固定的目录下,和` getExternalFilesDir()'返回的目录一样,就是`/ sdcard/Android/data/[your _ package _ name]/files下`。

请注意,如果您的应用程序在不更改跟踪日志名称的情况下再次调用startMethodTracing(),它将覆盖保存到设备的现有日志。如果希望每次运行时都保存到不同的日志文件,可以使用以下代码:

//使用简单日期格式类创建一个字符串

//当前日期和时间。

简单日期格式日期=

新建SimpleDateformat(" DD _ MM _ yyyy _ hh _ MM _ ss ");

字符串logDate = Date . format(new Date());

//将日期和时间应用于跟踪日志的名称。

Debug.startMethodTracing(

“sample-”+logDate);

如果系统在您调用stopMethodTracing()之前达到最大缓冲值,它将停止跟踪并向管理中心发送通知。启动和停止跟踪的函数在整个应用程序过程中都是有效的。也就是说,您可以在活动的创建(捆绑)中创建

函数调用startMethodTracing(),活动调用onDestroy()函数中的stopMethodTracing()。

第二,检查。跟踪文件

插入桩后,安装应用程序,运行被检测部分的功能,然后就可以通过AS或traceview查看文件了。

使用AS查看

在AS中点击查看-工具窗口-安卓文件浏览器,打开安卓文件浏览器:

生成的。跟踪文件可以在/sdcard/Android/data/[your _ package _ name]/files下找到,双击文件可以打开。

保存。将跟踪文件拖到计算机上,直接将其拖到自动化系统窗口中,或者直接打开视图。

在打开的视图中,您可以在左上角选择要查看的线程。您可以看到指定的线程运行了多长时间,执行了哪些方法,每个方法执行了多长时间,等等。

有四个名词需要解释:

-挂钟时间(Wall Clock Time):挂钟时间,表示实际经过的时间,即从进入一个方法到退出该方法的时间,而不管线程是活动的还是休眠的。

-线程时间:线程时间,表示实际经过的时间减去线程没有消耗CPU资源(休眠)的时间。对于任何给定的函数,其线程时间总是小于或等于其挂钟时间。使用线程时间可以让您更好地了解给定函数消耗了多少线程的实际CPU使用量。

-Inclusive Time:方法执行自己的代码的时间+执行自己的子方法的时间。

-Exclusive Time:方法执行其自身代码的时间。

使用跟踪视图查看

若要使用traceview查看,您需要保存。首先跟踪文件到您的计算机:

ADB pull/sdcard/Android/data/[YOUR _ PACKAGE _ NAME]/files . trace D:document sample . trace

打开“安卓设备监视器”。在AS3.0之前,是LogCat所在的窗口,切换标签页就可以了。在AS3.0之后,输入“android-sdk/tools/”路径并运行以下命令:

监控

虽然安卓设备监控的DDMS也有文件浏览器,但是没有root的手机无法查看上面的路径,所以只能保存。跟踪文件到计算机进行查看。

在安卓设备监视器中,依次点击文件-打开文件,并选择。打开它的跟踪文件路径:

内容和AS打开时差不多,主要区别是图标部分,没有AS的Call Chart的视觉形象。

还有四个概念:

Cpu时间:相当于AS中的线程时间。

实时:相当于AS中的挂钟时间。

包含时间:与相同。

独占时间:与相同。

使用自动化或跟踪视图查看

这是见仁见智。根据我个人经验,建议用AS来查。原因有二:

AS比较简单。不需要单独打开ADM,也不需要保存。跟踪文件到计算机。

AS的Call Chart更直观,cpu时间消耗一目了然。

调用图的横轴表示函数调用(或调用者)的时间段和时间,纵轴显示其被调用者。下图显示了一个调用图的例子,并描述了给定函数的自身时间、子时间和总时间的概念。

最后,需要注意的是,在跟踪和分析过程中,应用程序的运行速度会变慢。因此,traceview得到的分析数据并不能准确反映一个方法实际执行的绝对时间。关于这一点,在最后的笔记里做详细的分析。

Google还提供基于样本的分析,以减少分析对运行时性能的影响。若要启用样本分析,请调用Debug.startMethodTracing采样()方法,而不是调试方法。startmethodtracing()方法。在调用stopMethodTracing()之前,会定期收集样本。

中央处理器剖析器的使用

用CPU Profiler跟踪函数比traceview简单。不需要做任何代码植入。这里简单介绍一下:

首先,通过

查看-工具Windows-Android Profiler打开Android Profiler。手机连接电脑后运行应用,在Android Profiler中会看到如下视图:

您可以在左上角选择设备和进程,然后单击中央处理器区域进入中央处理器概述视图:

您可以在左上角选择跟踪模式:

采样:以默认采样率捕获应用程序的调用堆栈。这种模式的内在问题是,如果应用程序在一次捕获后进入一个函数,并在下一次捕获前退出该函数,分析器将不会记录该函数调用。如果您对这种短暂的跟踪函数感兴趣,您可以使用“仪表化”跟踪。

仪表化:在每个函数调用的开始和结束记录时间戳。分析和比较时间戳以生成函数跟踪数据。需要注意的是,设置与函数相关的开销会影响运行时性能甚至分析数据,尤其是对于生命周期相对较短的函数。此外,如果应用程序在短时间内执行大量功能,分析器可能会很快超过其文件大小限制,并且无法记录更多的跟踪数据。

1.《trace Android - 性能优化》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《trace Android - 性能优化》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/shehui/1047951.html

上一篇

北京高考变为4天 具体是什么情况?

下一篇

女子骂婆婆老不死的 一言不合被丈夫拳打脚踢

妻子的浪漫旅行3更新时间

妻子的浪漫旅行3更新时间

老婆浪漫之旅3于11月6日中午12点在芒果卫视和爱奇艺正式上线。参赛嘉宾:娜娜、霍思燕、、李娜、、、、、、凌。老婆浪漫旅行第三季是一个观察治愈情侣的节目,以团体旅行和棚内观察为主要模式,通过空对话重新审视夫妻关系,治愈婚姻。第三季游戏升级,加入闺蜜的浪漫之旅,老公的集体出发,夫妻交流,观察交流,每一次的对话和...

杭州老板骂走一半员工 建议:保证充足的睡眠时间

7月18日,杭州老板骂了一半员工,建议:保证充足的睡眠时间。杭州有个年轻的老板,因为最近烦躁,骂员工,失眠了一夜。结果第二天,他就陷入了恶性循环,批评员工,越来越糟。当他去杭州第七医院门诊部主任朱长江寻求帮助时,他说他担...

白银案嫌犯在甘肃省受审 审理时间预计两天半左右

白银案嫌犯在甘肃省受审 审理时间预计两天半左右

7月18日,白银案犯罪嫌疑人在甘肃省受审,庭审时间预计两天半左右。轰动全国的“白银案”将于今日在甘肃省白银市中级法院开庭审理。被告人高被控以故意杀人、强奸、抢劫和侮辱身体四项罪名。法院表示,由于个人隐私,案件不会公开审理,...

清华推迟开学时间 还原事发经过及背后原因!

清华推迟开学时间 还原事发经过及背后原因!

经济日报-中国经济网1月26日电兰州大学今天发布通知,根据新型冠状病毒感染肺炎的最新情况,决定推迟2019-2020学年春季学期开学,具体开学时间另行公布。通知要求,已在外地离校的学生,不得提前返校。根据所在地的有关要求,...

剑王朝电视剧播出时间

剑王朝电视剧播出时间

《剑朝》电视剧于2019年12月6日在爱奇艺播出,每周五至周日20:00更新2集。成员先看了6集,华干马导演,主演有李习安、李艺彤、刘奕君、姚笛、圆赵玉安、何润东、肖旭、李光复等。该剧取材于同名的纯真小说,讲述了一个神秘的街边酒楼少年丁宁在江湖各种磨炼后身陷险境的故事。电视剧《剑朝》主要讲述的是英雄争霸,乱世...

机场特警tvb播出时间

机场特警tvb播出时间

机场特警tvb 2019年11月11日播出。这是一部由执导,由、杨明、蔡、唐、、关、、李和黄宗羲共同主演的电视剧。机场特警队,英文缩写为ASU,成立于1977年。它是一支准军事特种警察部队,主要负责维护香港国家机场的公共和航空空安全,包括处理劫机、解救人质、反恐、保护贵宾和灾难支援。为了保护机场的绝对安全,机...

晚上八点是什么时辰 健身小知识|晚上8点之后不能吃?胖可不是看时间的

荷兰花海 最好的时间就要去最对的地方,盐城荷兰花海等你来!

  • 荷兰花海 最好的时间就要去最对的地方,盐城荷兰花海等你来!
  • 荷兰花海 最好的时间就要去最对的地方,盐城荷兰花海等你来!
  • 荷兰花海 最好的时间就要去最对的地方,盐城荷兰花海等你来!