iOS性能优化系列一:性能优化策略

这一系列文章是我的读书笔记,整理一下,也算是温故而知新。

性能问题的处理流程

  • 发现/重现问题
  • 利用工具剖析
  • 形成假设
  • 改进代码和设计

iOS应用性能问题处理流程

在以上的四个步骤中循环反复,直到问题解决。

Profile!不要猜!

性能优化的主要策略:

  • 不要做无用功:不要在启动时花几百ms来做logging,不要为同样的数据做多次查询
  • 试图重用:对于创建过程昂贵的对象,要重用而不是重新创建
    • Table View的cell
    • Date/Number的formatter
    • 正则表达式
    • SQLite语句
  • 使用更快的方式设计、编程:选择正确的集合对象和算法来进行编程、选择适合的数据存储格式(plist、SQLite)、优化SQLite查询语句
  • 事先做优化
    • 对于昂贵的计算,要进行事先计算。iCal中的重复事件,是预先计算出来的,并保存到数据库中。
    • 事先计算并缓存一些对象,可能会占用大量的内存。注意不要将这些对象声明为static并常驻内存。
  • 事后做优化:异步加载、懒加载
  • 为伸缩性而做优化:当数据有10条、100条、1000条甚至更多的时候,应用程序的性能不应该对应的呈数量级式的增长,否则无法使用。

说起来惭愧,我真的很少遇到性能问题。以前假设中的性能问题,很多是根本不存在的。事前计划也杜绝了不了性能问题的产生,所以不如暂时忘记它吧。当然对于一些常识性的提高性能的设计,仍然是必须的。

附小广告一则:唱吧iOS团队诚招iOS工程师,推荐成功即奖励6000元现金或iPhone 6一部,详见这篇blog