一、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自动显示源代码,并且以彩色来显示代码耗时时间。
-
可以同时查看源代码和汇编代码:打开源代码后,点击窗口右上方的第三个按钮后可并列显示。
-
Focus: 点击某一个行分析结果右侧的箭头,点右键:“focus on calls made by ”可以打开焦点数据挖掘。
-
Purning:把一些不想要的系统函数去掉。现在某个系统函数,点右键:“Prun *** and subtrees”
-
内部测量:自己编写代码测试函数执行时间。