增长黑客:5.2 优化产品性能

在激烈的市场竞争中,即便产品具备基本的可用性和传播上的噱头,如果某些性能指标存在瓶颈,也会令用户疏远。亚马逊的统计数据就表明,网站的打开时间每多延迟100毫秒,就意味着多造成了100万美元的营收损失。

某手机助手罗列出用户手机中的耗电应用排行

有的开发者抱着侥幸心理,猜测自己糟糕的代码逻辑处于黑箱之中,用户在前台使用并不会觉察到。殊不知,如今在用户电脑、手机里有各种安全与性能优化工具,它们对每一款安装到系统中的产品均有记录,能检测、比较产品的性能指标,并且给用户卸载建议。如果一款应用的耗电量较大、CPU占用过高,或是请求了不必要的权限,都会在用户眼前暴露无遗,被列入黑名单乃至惨遭遗弃。因此产品的性能优化应当从一开始就纳入考量,建立良好的框架结构,并在后续持续维护、迭代改善。

作为世界上最大的社交网络,Facebook的移动客户端就面临着全球最为严酷的考验——需要全方位应对不同地理位置、网络环境、设备型号以及使用习惯的用户,确保绝大多数人都能正常使用。尤其是发展中国家,由于基础设施铺设和经济社会因素的影响,相比发达国家可谓是“重灾区”,需要重点盯防。为此,2013年Facebook的增长黑客协同安卓产品经理、研发工程师共同奔赴非洲,亲身体验了一把当地的产品使用情况,以此深入寻求优化的方向。

体验的结果令他们印象深刻。当地网络环境极为糟糕,应用连接不时中断;人们所用的安卓设备内存小,导致应用加载缓慢且极易崩溃;每月的手机上网流量也捉襟见肘,通常40分钟就用完了。这些情况在遍布城市Wi-Fi热点的美国简直难以想象。

非洲的智能手机用户,图片来源:搜狐IT

为此,Facebook产品团队采用了下面这些优化策略。

1.单核的安卓手机启动应用尤其缓慢,这是因为启动过程中需要并行初始化多个模块。于是他们在单核手机上将这些初始化过程移到了启动完毕之后,甚至让某些模块只在即将被用到时才开始初始化。这一改动让应用的启动时间减少了50%。

2.在网络顺畅的时候预加载未来可能用到的数据,以便在网络突然变得糟糕时,用户能尽可能多地获得离线内容。

3.为了应对上网流量昂贵的问题,让用户安心享受拍照功能,他们调研了众多的图片格式,并最终选择了WebP格式。原因很简单,WebP格式同样是由安卓系统的开发公司Google推出的,二者在生态上兼容良好,压缩效率极高,相对于网页常用的JPG格式图片而言,流量节省了25%至35%,比PNG更是节省了将近80%。最重要的是,图片品质没有明显的改变。

4.原本Facebook的应用会统一加载最大分辨率的图片,这是为了让用户可以自由地缩放。后来经过改进,会优先加载适合当前手机分辨率的图片,只在需要时(比如用户点击查看完整大图)才从服务器获取最高分辨率的图片,并且该用缓存时就决不发起额外的请求。上述两项改动让图片加载慢或失败的反馈减少了90%。

5.用户的手机空间太小,直接导致了升级时下载安装包受阻,这批用户将继续停留在老版本,无法享受因升级带来的全新体验。于是工程师们开发了一个工具,能够自动计算出每个产品特性会让安装包的体积增大多少,以此在不同的安卓设备上做出功能取舍,推送不同的安装包。经过优化之后,文件大小减少了65%。

这趟令人大开眼界的非洲之旅让Facebook的开发者们彻底认识到了移动应用的性能、处理数据的策略、网络的可靠性,以及根据使用场景做出智能判断,对在发展中国家谋取增长的重要性。

无独有偶,Instagram的研发工程师泰勒·凯福特(Tyler Kieft)在一次会议演讲中,交流了他们改版安卓应用的心得。Instagram在2012年由一个3人团队历时4个月完成安卓版本开发时,曾经使用的是和iOS版本相同的设计。丰富的渐变与大量的用户界面元素让产品显得精致美观。伴随iOS的发布,Instagram也随之加入了“扁平化”的设计风潮,但这不是一次毫无意义的跟风,倒更像是借此契机进行了一次性能大改造。

1.扁平化设计有着更加简洁的视觉效果,没有多余的渐变和阴影,保留纯色和线形,这让设计和开发人员的工作量更少、代码开发和产品迭代速度更快。原本需要贴图实现的色彩效果,只需要通过资源着色(Asset Tinting)技术就能以编程的方式达成,例如将一颗灰色的心通过编程变成红色,而完全不必劳驾设计师。在扁平化之前,程序需要加载29个不同的资源文件来展示主界面,扁平化之后则只用到了8个,在所有设备上平均减少了120毫秒的启动时间。程序漏洞数量减少了,运行速度也有了显著提升。

2.重新布局界面,去除冗余的元素,让用户更多地关注内容。如将搜索的层级从三层减为两层,去掉评论图标以便使评论文本占据屏幕的全部宽度,在小屏幕手机上把常用操作按钮放在界面顶部而非大屏幕手机的底部。

3.兼用方法追踪(Method Tracing)和时点声明(Timing Statements)技术,将程序主体拆解成可以配置的模块,延迟加载不必要的模块(这点与Facebook是一致的),重写导致缓慢的部分。例如原本使用网页组件(WebView)显示的评论文本,有自己的堆栈和缓存机制,处理起来较为复杂迟缓,于是他们花费三周左右的时间将它改写为用原生的文本组件来显示,调用时间因此减少了30%。加载cookie、图像及视频缓存的这些“小动作”,也被偷偷隐藏到了用户无法感知到的程序后台。原先Instagram在三星的低端Y系列手机上的启动时间是3秒,在高端S5手机上的启动时间为750毫秒;优化后,这两个数字分别降到了1.5秒和400毫秒。

Instagram扁平化前后的视觉效果对比

像这样审慎地进行每一像素的开发,宁可麻烦自己,也绝不拖累用户。抱着这样的觉悟和诚意去用心做产品,相信一定能让用户感受到。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容