Instagram 性能优化之道

  • 谢丽

2014 年 11 月 5 日

话题:性能调优语言 & 开发架构

@scale 2014 大会上,Instagram 工程师Tyler Kieft做了题为《普通安卓设备上的 Instagram》的演讲,介绍其团队如何针对普通手机(相对高端手机而言)重新思考 Instagram 的设计。Highscalability.com据此报道了 Instagram 的性能优化之道。

转向扁平化设计

在开发新版本的 Android 应用时,Instagram 团队借鉴了开发 iOS7 应用时的扁平化设计经验,从以下几个方面做了改进:

  • 去掉了所有的渐变色和光滑的按钮,用轮廓形状代替。
  • 去掉了评论图标,使评论可以充分利用屏幕宽度,显示更多内容。
  • 为拍照功能创建了不同的布局。在小屏幕手机上,拍照按钮在屏幕上方;在大屏幕手机上,则是在下方。
  • 去掉了应用中所有不必要的 UI,更注重内容的展示。

这样做的好处是:

  • 资源传输减少,这意味着 APK 文件更小。借助“资源着色(Asset Tinting)”技术,图像可以通过编程进行着色。
  • 资源加载减少,这意味着 UI 显示速度更快,内存使用更少。
  • 迭代速度更快。如果开发人员想改变颜色,只需改变代码并重新编译,而不再需要设计人员参与。

扁平化设计使 Instagram 在所有设备上的启动时间减少了 120 毫秒。而且,整个应用的运行速度都更快了。

缩短冷启动时间

冷启动时间是指从应用开始启动到可以响应用户请求这段时间。为了缩短冷启动时间,提高冷启动速度,增强用户体验,Instagram 团队采取了如下措施:

  • 性能分析——反复对应用进行性能分析,找出增加应用冷启动时间的原因。通过延迟加载、重写速度慢的代码、将可以后台完成的任务交由后台线程处理等方法消除性能瓶颈。
  • 单例实例与 UI 分两部分并行加载, UI 无需等到前者加载完成就可以显示。
  • 将 Newsview 由 Webview 改为原生控件。仅此一项就使冷启动时间缩短了 30%。

通过上述改进,Instagram 在低端 Galaxy Y 上的启动时间由 3 秒降至 1.5 秒,在高端 Galaxy S5 上的启动时间由 750 毫秒降至 400 毫秒。


感谢郭蕾对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

性能调优语言 & 开发架构