工具主要有以下3种:
基本工具,不需要Xcode instruments。
内存工具,验证内存使用的正确性和测试内存使用的效率。
性能工具,测试你程序的每一个部分运行有多快以及精确的定位任何瓶颈。
基本工具
在本部分,我讨论的是在代码块中使用日志作为一个基本的工具来测试运行的时间。
用日志记录运行的时间
基本工具其中之一就是用日志来记录代码块开始和结束的时间。通常,记日志是用NSLog来实现的。使用这个基本的工具,开发者能够检测每行代码或代码块运行的时间。
例如,运行下面的代码块
NSDate *date1 = [NSDate date];
for (int i = 0; i < 1000; i++) {
// Do calculation here
}
NSDate *date2 = [NSDate date];
NSLog (@”time: %f”, [date2 timeIntervalSinceDate:date1]);
返回的结果:
time:0.0123(秒为单位)
优点:
简单直接。
你可以测试每一行代码或每一个代码块的性能
缺点:
你无法测试UI性能(例如,渲染UI线程的时间)。
可能会过度优化(为了一点点的优化,而花费太多时间再一个特定的代码块中)。
在模拟器上运行通常比较快,在这个比较快的级别上,NSLog不能帮助你区分运行时性能的不同。尽管NSLog在真机上运行比较慢,但是它能够帮你检测到运行时性能的不同。
使用时机:
当你需要一个马上就可以用的工具来测试,而没有太多的准备。
当你需要一个工具能够快速的返回结果。
当你需要一个独立的小代码块来验证预期的性能。
内存工具
关于内存的问题,你只有一个主要要关注的方面:高内存使用。在旧的代码中有两个要关注的:内存泄露和内存回收。对于新的项目,你可以直接使用新的自动引用计数(ARC)。对于旧的项目,你可以使用控制工具对他们进行转换。
但是,不是每一个项目都是可以转的,有很多问题和内存管理策略阻止你进行转换。如果尝试遵从新的管理策略可能会导致更多的麻烦。因此,我主要讨论对象分配的内存工具,简单的介绍内存泄露和内存回收的工具。
注意:我这里介绍的所有内存工具都可以运行在模拟器上。使用模拟器的好处是它运行比较快,安装app也比较迅速。但是,要小心!我强烈建议你同样要在真机上测试你的app,因为模拟器和真机是不同的。他们编译不同,架构也不同。
内存分配
内存分配能够帮助你理解你到底分配了多少对象。这意味着在内存中分配和保持了很多对象。这些对象没有释放,因为他们正在使用。
Allocation
选择 Product -> Profile 然后在打开的窗口(如图 2-1)中选择 Allocations
在选择Allocations instrument之后,你会看到一个Allocation 面板,向你展示了所有必要的信息,如图2-2 。
在Allocations 面板(图2-2)显示了“created and still living”jobs,这样就能够什么对象还在内存中,以及什么对象消耗了大部分的内存。如果你从iOS环境中收到内存警告,例如“Received memory warning. Level =1 ”,你应该使用这个工具。
这些细节想你展示了何时,哪一行代码,哪一个类负责创建和处理对象。有了这些信息,你能非常简单的处理内存问题。这是一个非常好的工具来跟踪缓存算法和方法(查看第4张了解更多细节)。
图2-3和2-4显示了更多细节,什么对象还存活着,什么对象消耗了你应用的大部分内存。在图2-3中,你可以看到在你的应用中,对象创建和存活的细节列表。
在图2-4中,你可以看到创建这些对象调用的方法。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。