前言

现在都在谈性能优化或者在面试的时候被问到性能优化相关问题,那么我们为什么要做性能优化呢?以及性能优化的难点是什么?在整个项目周期中不同的阶段该做什么?优化效果如何长期保持?作为一名Android高级工程师或者架构师,我们看待问题的角度不能单一而是要学会从多个维度来仔细考量 ,这样才能更全面的认识以及解决问题!下文会从多个视角来学习性能优化工作当中 我们可能会遇到哪些难题!

性能优化有哪些难题

难点一:性能表现差

性能优化的第一个难题是APP的自身性能表现差,这是从APP自身性能使用来说的:

  • 第一种问题是用户可以直观的感受到,比如说:APP启动慢、卡顿、丢桢等,用户肯定会报怨手机太卡了!
  • 第二种问题是用户虽然不会直观的感受到,比如说:内存占用高,抖动频繁,但是这种隐藏的问题可能会导致内存溢出,从而影响程序的正常运行
  • 此外性能问题还有应用耗电、网络请求慢、崩溃率和异常率高

其中崩溃率和异常率属于稳定性的范畴,崩溃率比较好理解需要注意的是应用异常率。异常是指APP不能正常的作出反应,比如说我们点击了一个按钮,它并没有正确的跳转到下一个界面,此时APP并没有崩溃,但是同样它也处于不可用的状态,带来的非常不好的用户体验。

难点二:线上问题无法排查

线上问题排查困难对于很多Android程序员来说就是个烧(tuo)脑(fa)的问题,下面来说说线上问题排查的主要难点!

性能优化的第一个难题是线上问题无从排查,这是从排查问题的视角来说, 通俗来讲的是耽误线上出现了异常时我们如何才能够保证较高的异常感知灵敏度。

当我们发布了一个新版本或者上线了一个新功能没有用户反馈,我们也千万不能够认为已经成功上线了,因为仅仅依赖于用户反馈这个单一的渠道非常容易错过异常出现的第一时间,等到有用户不堪忍受来反馈造成的损失已经太大,而且也已经错过最好的处理时机。

线上问题排查的第二个难点:如何复原案发现场, 假设用户给了我们反馈但是此刻我们也不能够高兴过早。因为用户有反馈不代表我们一定能够复现,很多问题并不是所有用户都会发生,发生了这种特殊问题的用户,他可能是使用了特殊的设备或者是他的账户处于特定的异常状态。等到我们在公司用自己的设备和自己的账户去复现他的问题的时候很有可能会因为条件不足而无法复现,自然也就没有办法快速解决。

线上问题的第三个难点:如何快速修复成功, 针对线上问题而言时间就是生命必须尽早的成功修复。在我们修复之后,为了保险起见一般都会开放部分小流量用户或者找特定用户来进行测试。但是如果说我们的手段是连续用户重新安装然后等待结果,这样的解决方案它的周期实在是太长,而且多次下来后用户也会有些反感,最终可能找不到配合你要用户。

难点三:性能优化的长期开销大

性能优化的第三个难题是性能优化的长期开销大,这是从团队管理者的视角来说。如果我们在每个版本当中都需要花费大量的精力来跟踪关于性能的问题,长期来看说团队的资源消耗非常大,团队的产出的也就变少,于是我们就要思考如何才能将问题扼杀在萌芽之中,尽可能的在上线之前将问题解决。

性能优化的长期开销大难点在于性能优化的效果不能够得到长期的保持,我们优化完成了之后的程序,如果没有措施那么很可能在接下来的版本当中会再次到了破坏,出现性能问题还是需要我们优化 ,这样长期的重复肯定会导致开销变大。

总结

通过上文所说性能优化工作当中遇到难题,我们反推也很容易总结出来我们对性能工作优化的要求指标:

  • 性能表现好
  • 线上问题容易排查
  • 长期投入成本小

Android性能优化——性能优化的难题总结的更多相关文章

  1. android 性能分析、优化

    .主要介绍了一些分析工具,比如GT.ITest等http://www.jianshu.com/p/8b77d394b2a6 .详细介绍啦android平台常见性能优化工具http://blog.csd ...

  2. 转——Android应用开发性能优化完全分析

    [工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.] 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉 ...

  3. Android 应用开发性能优化完全分析

    1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...

  4. 【转】Android应用开发性能优化完全分析

    http://blog.csdn.net/yanbober/article/details/48394201 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关 ...

  5. Android应用开发性能优化完全分析

    1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...

  6. ym——Android之ListView性能优化

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android之ListView性能优化 假设有看过我写过的15k面试题的朋友们一定知 ...

  7. 关于android性能,内存优化

    转:http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost& ...

  8. <只看这个就够了。。。>Android自动化测试及性能优化

    Android自动化测试及性能优化 分类: Android Java Tools2012-12-09 23:31 4300人阅读 评论(0) 收藏 举报 软件自动化测试对于程序员来说能够确保软件开发的 ...

  9. 转:Android应用开发性能优化完全分析

    转自:http://blog.csdn.net/yanbober/article/details/48394201 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜 ...

随机推荐

  1. ClickHouse源码笔记6:探究列式存储系统的排序

    分析完成了聚合以及向量化过滤,向量化的函数计算之后.本篇,笔者将分析数据库的一个重要算子:排序.让我们从源码的角度来剖析ClickHouse作为列式存储系统是如何实现排序的. 本系列文章的源码分析基于 ...

  2. OSPF路由协议

    一.OSPF的工作过程 二.OSPF的基本概念 三.DR与BDR 四.OSPF数据包类型 五.OSPF邻接关系的建立 六.OSPF的路由器类型 一.OSPF的工作过程 OSPF路由协议针对每一个区域分 ...

  3. Kubernetes全栈架构师(Kubeadm高可用安装k8s集群)--学习笔记

    目录 k8s高可用架构解析 Kubeadm基本环境配置 Kubeadm系统及内核升级 Kubeadm基本组件安装 Kubeadm高可用组件安装 Kubeadm集群初始化 高可用Master及Token ...

  4. SpringCloud:扩展zuul配置路由访问

    继续上次整合SpringCloud的demo进行扩展zuul:https://www.cnblogs.com/nhdlb/p/12555968.html  这里我把zuul划分出一个模块单独启动 创建 ...

  5. CentOS6.5 mini安装到VirtualBox虚拟机中

    下载Oracle VM VirtualBox 下载下来安装 下载镜像 http://archive.kernel.org/centos-vault/6.5/isos/i386/CentOS-6.5-i ...

  6. powerpoint2013去掉图片背景,转存png

    1.打开powerpoint,点击菜单栏的[插入],如图: 2.点击『图像』,如图: 3.上传图片,如图: 4.上传的图片不是png的,现在需要去掉白色背景,保存成png,选中图片,点击菜单栏的『格式 ...

  7. java设计模式(9):模板方法模式(TemplateMethod)

    一,定义:模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 二,类图: 三,通过小例子讲解: 这个模式一般用在 ...

  8. 24 shell 管道命令与过滤器

    1.管道命令的用法 2.使用管道命令的好处: 3.重定向和管道的区别 4.Linux管道实例 5.管道与重定向 1)管道与输入重定向 2)管道与输出重定向 6.过滤器 7.过滤器举栗 1.管道命令的用 ...

  9. SpringBoot中如何监听两个不同源的RabbitMQ消息队列

    spring-boot如何配置监听两个不同的RabbitMQ 由于前段时间在公司开发过程中碰到了一个问题,需要同时监听两个不同的rabbitMq,但是之前没有同时监听两个RabbitMq的情况,因此在 ...

  10. XCTF(MISC) 图片隐写

    题目描述:菜猫给了菜狗一张图,说图下面什么都没有 1.给了个pdf,打开是这玩意 2.盲猜flag是图片后面,右键直接删除图片试试. 答案出来了.