HelloWorld


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 其他

EZLippi-浮生志

Android 性能优化之运行时间监测

发表于 2019-07-12 18:55:36 | 分类于 Android | 点击量 995 ℃

以Application为例,在进行项目优化时,我们需要监测该类中所有方法的运行时间,找出最耗时的操作进行分析优化。

  以往比较随意的做法就是在方法前后加上System.currentTimeMillis(),两者数值进行加减得出运行时间,比如:

long start = System.currentTimeMillis();
test1();
long end =  System.currentTimeMillis()-start ;
TBTools.log().i("Running time","运行时间>>>"+end);
 

这样就拿到了test1()的运行时间:


这样在方法数量很少时,可以这么操作,但是试想类中有100个方法时,我们就需要去写100次这样的代码,及其的繁琐,侵入性很强,强耦合的同时代码维护起来也十分的恼火,十分杂乱,如:

long start = System.currentTimeMillis();
test1();
long end =  System.currentTimeMillis()-start ;
TBTools.log().i("Running time","运行>>>"+end);
 
start = System.currentTimeMillis();
test2();
end =  System.currentTimeMillis()-start ;
TBTools.log().i("Running time","运行>>>"+end);
 
start = System.currentTimeMillis();
test3();
end =  System.currentTimeMillis()-start ;
TBTools.log().i("Running time","运行>>>"+end);
此时,我们便可以通过AOP(面向切面)来进行此操作,这里我使用的是:AspectJ,当然也有很多其他实现方式,
AOP的好处就是统一管理同一个事件,侵入性很低,还有一些其他好处,可自行百度。
实现方式:

根目录中的build.gradle中添加

dependencies {
    .....
    classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0'//AOP模式监测
}
app/build.gradle中添加

apply plugin: 'android-aspectjx'
 
dependencies {
...
 
compile 'org.aspectj:aspectjrt:1.8.0'
 
}
完成以上配置步骤后,编写代码:
/**
* 通过使用AOP(切面)来检测方法运行时间
* Created by tanbo on 2019-06-24.
* Hello World!
*/
@Aspect
public class StateMonitor {
    @Around("call(* com.tanbo.rocery_store.APPAplication.**(..))")
    public void getTime(ProceedingJoinPoint joinPoint){
        long start = System.currentTimeMillis();
        try {
            joinPoint.proceed();
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        long end =  System.currentTimeMillis()-start ;
        Log.i("APOMonitor",joinPoint.getSignature().toString()+"   启动时间>>>"+end);
    }
 
}
这里我用的注解方式是前后添加的模式Around,后边参数意思是call(返回值 类名地址.方法(参数))。

这个类因为绑定的Aspect,运行时会自动指向这个类,并运行其中的方法,因此不用再去创建它的示例等操作。

编写完毕后直接运行项目,以上代码运行结果:



会打印出该类中的运行方法耗时,这样我们就可以根据需求进行数据筛选和优化等操作,同时也可将这些时间与我们自己的APM进行对接

  • 本文作者: tanbo
  • 本文标题: Android 性能优化之运行时间监测
  • 本文链接: /blog/articles/49
  • 发布时间: 2019-07-12 18:55:36
< Android 性能优化之资源图
JAVA杂  >
EZLippi

Tanbo

From Sichuan
Android开发工程师

29 日志
6 分类
6 标签
头像
评论 1
  • 头像
  • 180.163.220.5
  • 2022-11-23 13:17

© 2019 - 2020 HelloWorld
由 Hexo 强力驱动
主题 - NexT.Mist | Hosted by Coding Pages