《iOS和macOS性能优化读书笔记之一》

一、CPU原理

  • OC是一种混编语言,如果你在计算过程中采用基本的类型比如int, double等计算时间非常小,比Swift,Java采用基本数据类型计算还小。如果是采用OC的类型,比如NSNumber等,就会比较耗时。
  • OC在快速创建对象时,比其他纯粹的面向对象的语言要慢。
  • 复杂度计算,通过indexOfObject实现的隐式二次算法的例子,如果传入参数是一个数组,使用indexOfObject方法执行检查时,执行次数为O(m),如果该成NSSet,已经摊销了 O(1)用于检查存在。

二、测量和工具

  • top 在命令行输入:top -u 命令

  • time 命令

  • sample 命令,配合top命令和time命令查看具体信息

  • Xcode测量工具:打开Xcode主窗口左侧的调试导航器(command+7)

  • Instrument:作为一个功能强大的采样工具,它的输出信息通常是指示性的不是定性的。

  • instrument 设置和收集数据:Xcode->Production->Profile->Time Profile启动时间分析工具。点击file->RecordingOption->Time Limited 设置检测时间限制

  • instrument 基本分析:详细信息视图中的每一行显示单个函数或方法,对于每个函数,显示当前函数和子函数的总运行时间(以毫秒为单位)。小图标表示函数的来源,头像表示用户,杯子表示Cocoa,小齿轮代表系统调用。单击最上方的三角形,条目会按时间倒序排列,最新版本的Xcode有一个Self Weight列,列出了时间消耗权重。可以结合用户函数和Self Weight来双击打开某一行,instrument自动显示源代码,并且以彩色来显示代码耗时时间。

  • 可以同时查看源代码和汇编代码:打开源代码后,点击窗口右上方的第三个按钮后可并列显示。
    《iOS和macOS性能优化读书笔记之一》_第1张图片

  • Focus: 点击某一个行分析结果右侧的箭头,点右键:“focus on calls made by ”可以打开焦点数据挖掘。

  • Purning:把一些不想要的系统函数去掉。现在某个系统函数,点右键:“Prun *** and subtrees”

  • 内部测量:自己编写代码测试函数执行时间。

你可能感兴趣的:(iOS)