在本章,你将学到下面这些内容:
模拟器和真机测试环境的不同。
内存管理是如何影响一个app的性能。
检测app的工具和技术包括:
1)基本的测试内存和性能的工具。
2)测试内存管理方面比较复杂的工具,比如内存泄露和bad access。
3)测试计算过程中性能方面比较复杂的工具,比如电池,文件加载,显示信息等。
如何把你的程序分割成更小的部分,这样能够更简单的定位性能的瓶颈。
为了提升性能,你需要非常小心的运行测试来查看问题出现在哪里。为了执行一个有用的测试,你需要知道程序或代码段可能运行慢的原因。
在一开始,你应该注意两种基本的选择:模拟器和真机环境,内存优化和性能优化之间的平衡。
首先,你需要知道模拟器和真机环境的不同。
模拟器和真机
iPhone应用性能的主要问题是他们运行在一个受限的,处理慢的环境中。iPhone模拟器开发环境比真机环境要更快;事实上,模拟器的环境跟在mac机器上运行它一样快。
因此,你可能会非常的惊讶,当你的程序在模拟器上运行比较快,而在真机上比较慢。我观察到很多人抱怨在手机网络上应用比较慢。在某些情况下确实如此。但是,在很多情况下app的性能可能会下降很多,由于代码实现本身,而不是网络的问题。因此,用基本的工具何标准环境仔细的测试你的app,会使得你的app在性能和用户体验上更加自信。
为了演示模拟器和真机的不同,我在模拟器和真机上测试了一个程序,结果让人吃惊。
在模拟器上花了0.5秒完成了主要的计算。
在真机上同样的计算花了7秒。
程序很简单:我用两个数组中进行一个简单的测试,每个数组有1000个元素。然后,代码循环这两个数组,发现两个数相同就打印“hello”。在真实环境中,你可能不需要在一个数组中处理1000个元素或你可能不会选择循环一个数组来找到相同的数。但是,这不是重点。我主要是为了演示真机比模拟器运行慢的多。
这引出了我在本书中将会多次提到的一个非常重要的点:你总是需要在模拟器和真机上同时测试。那为什么不只是在真机上测试呢?因为模拟器有以下优点:
在模拟器上运行比较快,这意味着可以减少开发者被耽误的时间。
比较好测试内存泄露和内存分配问题。
内存和性能
内存和性能是不同的。内存通常是指随机存储器,它代表了你使用了多少存储空间,以及你还剩多少存储空间。性能是指你运行一个指定的功能你的app有多快。
内存可能会对性能产生巨大的影响。当你的设备有更多的RAM和更多的存储空间,你可以预加载和缓存更多的数据。相比文件存储和网络,RAM访问是非常快的。通过在RAM上预加载和缓存更多的数据,在很多情况下你可以显著的提升你的程序性能。例如,如果你的app是一个游戏,需要加载很多图片,你可以在必要的时候预加载和显示他们。从RAM中加载比从文件中加载要快10倍。
但是,内存使用好并不意味着性能就好。有一些app不需要使用很多内存;因此,如果你只是优化内存,性能可能并不会提升。反之就不好了:一个app为了达到一个比较好的性能而使用了所有的内存,很快app就会把内存耗尽。
因此,你应该总是要对内存和运行时性能进行仔细的测试,确保在内存使用和运行时性能有一个好的权衡。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。