android通过优化gc可提高多大效率
发布网友
发布时间:2022-05-02 16:02
我来回答
共1个回答
热心网友
时间:2022-06-20 19:07
如果你面对的是一个多个团队维护, 开发维护历史坎坷, 用户众多的产品, 那第一步要做的也是确定KPI, 并经可能准确稳定的得到基线。
确定KPI
KPI不一定非要从最终用户的交付出发, 也可以是像"loop函数的处理时间不超过0.05秒"这样规定.
得到基线
根据KPI先得到基线, 如果已经有成型的产品, 则用当前的版本作为输入得到, 如果没有产品, 考察几个市面上的竟品得到. 同时需要注意的是基线的测量不可避免的会遇到样本不足和数据抖动的问题, 使得不稳定性, 所以测量方法也要尽可能的稳定和禁得住推敲.测量方法的设计也是一个涉及面比较广的话题了, 不展开了. 多测试几次,应用方差/平均值这样的统计方法处理. 现在越来越多的应用使用线上收集的方式来收集性能数据, 就是为了增加样本数.
识别问题得到基线后, 基本上对于产品的性能就有一个__客观__的认识了。记下来就开始针对用户/产品/开发者不满意的地方进行工作了。不过,先不要急, 首先要识别问题。这里有一个我对于问题的分类, 跟各位分享。
资源资源类问题指产品对于资源使用上存在着严重的浪费, 比如频繁的IO操作, 过度的线程使用等等。
体验大部分影响用户体验的问题,都可能是资源类问题引起的。但是还有相当一部分与资源无关, 比如: 数据从网络端到客户端呈现比较慢,打开任务列表是等到菊花也谢了等
分析并解决问题就像性能问题是多种多样的一样, 解决问题的手段也要视不同情况而定。但是,还是有一定的规律可循,同时,也有一些风险需要规避:
迷信新技术
盲目的认为新技术的引入可以解决性能问题, 往往摁下葫芦起了瓢。
频繁改设计
每当有性能指标表现低下时,就改动设计, 认为设计一定存在不合理的地方。
同时, 有一些实践经验分享:
优化交互
对于体验类问题, 其实最好的切入点是优化交互设计。比如: 让页面能马上进入,可以让用户操作一些不需要网络数据的操作; 多张图片展示增加动画效果,虽然总体展示时间不能提高,但是给用户在整个过程中产品很努力不无聊。
先改bug
比较突出的性能问题往往伴随着bug或者代码瑕疵。比如, 在Android上内存的泄漏引起频繁gc导致程序卡顿; 逻辑错误导致程序在后台持续请求数据,引起功耗增加等。