启动优化工作选择

注意点:

  两种方式 互相补充

  正确认识工具及不同场景选择合适 的工具

 

1、traceview工具:

  图形的形式展示代码执行时间、调用栈等

  信息全面,包含所有线程

使用方式:

  Debug.startMethodTracing("app");//在application类里的onCreate()方法最开始点调用 ,参数作为保存文件的名字,例如:app.trace

  Debut.stopMethodTracing();//在application类里的onCreate()方法里结束点调用 

生成文件在sd卡:Android/data/packagename/files/xxx.trace

文件分析:

 

 

优缺点分析:

traceview 支行时开销严重,整体都会变慢。因为他会把所有线程里的所有方法都运行一次,以及进行排序。

可能会带偏优化方向

traceview与cpu profile对比,它可以通过代码埋点,可以准确进行抓取信息,profile则需要在APP启动那一刻马上同步启动,才能看得到结果。

 

2、systrace工具:

  结合Android内核的数据,生成Html报告

  要求API 18以上使用,为了兼容版本,推荐TraceCompat

使用方式:

  python systrace.py -t 10[other-options] [categories]

  TraceCompat.beginSection("app");//在application类里的onCreate()方法最开始点调用 ,参数作为保存文件的名字,例如:app.trace

  TraceCompat.endSection();//在application类里的onCreate()方法里结束点调用 

  在终端运行:

  python /User/Liuzhao.Future/Library/Android/sdk/platform-tools/systrace/systrace.py -b 32768 -t 5 -a com.optimize.performance -o performance.html sched gfx view wm am app

优缺点:

  轻量级,开销小

  直接反映cpu利用率

cputime 与 c区别:

  优化方向应该看的是cputime的时间,而非 walltime 时间

  walltime 是代码执行时间,cputime 是代码消耗cpu的时间(重点指标)

   举例:锁冲突 ,导致walltime 消耗时间非常长

 

posted @   白一粥  阅读(99)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示