流程

  1. 确定指标:明确要优化哪些指标,指标如何定义和计算。
  2. 测试工具:定位问题使用到的工具,第三方工具,或者自行开发。
  3. 定位问题:使用工具定位问题,例如页面滚动卡顿,要定位到具体哪些代码逻辑耗时较多。
  4. 需求文档:编写技术需求文档。
  5. 任务分配、版本排期:如果是多个人负责,需要根据实际情况分配任务,并进行版本排期。
  6. 技术优化:具体进行优化。
  7. 成果验收:优化完成后,使用测试工具再次测试,对比分析优化前后的效果。
  8. 规范制定:如果优化过程中,发现了一些业务代码的写法容易导致性能问题(例如在BindView过程中打Log而且线上包没有删掉,容易引起卡顿),可以针对性的制定一些代码规范。还可以封装基础工具类解决这类问题(封装Log工具类,统一控制Log输出),借助静态代码检查工具进行约束(例如可参考 美团外卖Android Lint代码检查实践 )。
  9. 持续监测:借助监控SDK、CI工具等,持续监控性能指标,避免之后性能持续下降。
阅读全文 »

背景

在Android应用中,ListView / RecyclerView / ScrollView 滚动时,如果有过多图片加载容易导致卡顿,特别是快速滚动时,bindView中大量图片加载操作,会导致系统频繁分配回收内存,不仅消耗大量CPU和网络流量资源,而且极端情况下还会因为内存来不及回收产生OOM。

阅读全文 »

Crash率是Android App中的重要指标,对用户体验的影响非常大,因此监控一个App的Crash率是一个很重要的事情。第三方有现成的Crash监控方案,但是不一定能满足所有项目的需要,本文讨论Android监控SDK的完整设计思路,包括数据采集,存储,上报,展示,报警,去重等一系列流程。

Crash率的计算

阅读全文 »

备注:文章写的比较早,一直没发出来,里面有些内容可能和小程序最新的情况有一点点差异……

最近接触小程序开发,遇到了大量的坑,做个总结分(tu)享(cao)一下。

阅读全文 »

Supervisor是一款用Python实现的进程管理工具,可用于在后台以Daemon模式运行进程,并能在异常时自动重启。例如可以用Supervisor管理Node、Nginx等。

安装

阅读全文 »

遇到一个问题,转移网站图片,需要在Linux远程计算机之间复制大量文件(文件数量多,占用总空间也大),有多种方案。

1、下载到本地再上传到目标服务器。两个服务器都在国外,并且带宽很大,直接传输速度很快。但下载到本地的做法,大大受限于本机的网速,效率实在太低。

阅读全文 »