iOS 性能优化
2016-08-20 15:22
316 查看
要知道作为一名开发人员,性能优化思维是必备的:
产品是为了取悦用户才有存在价值。
设备是为了方便用户才有其价值。
要做到更好。
用户的体验质量才是最实际的。
关注能带来最大收益的方面。
iOS开发用到的性能优化的工具最典型的非Instruments莫属了。
Instruments
默认情况下,Instruments是在Release模式下编译构建的。这可能会表现跟Debug模式完全不同的性能,但我们可以修改成Debug模式就行了。
模拟器和设备的性能可能完全不同,大多数情况,只需要在设备上进行性能分析就行了。
Instruments经常在为当前应用查找符号时出现麻烦。通常需要通过File->Re->Symbolicate Document再次符号化文档。
内存问题
我做过C++项目之前也是内存问题,不管做什么方面的开发,内存泄露,溢出等都是很常见也是我们最重视的问题,下面看看iOS开发如何来解决内存问题。
我们可以实时看到内存的变换,会弹出一个框,问我们是否转换模式,选择是即可。
打开了我们的工具
1、这里控制记录过程,点击红色的”记录”按钮可以停止或开始当前正在分析的app(在记录和停止按钮之间切换),暂停键,如你所想,暂停当前正在运行的app。
2、这里是执行计时器(run timer),计时器记录着正在分析的app执行了多长时间、执行了多少次。如果你使用记录控制按钮来停止你的app,然后重启,这将创建一个新的运行记录,同时会显示”Run 2 of 2”。
3、这里被称作路径(track),就你选择的Time Profiler工具而言,因为只有一个工具,所以这里只有一条路径,关于这里显示的图标的详情,一会你就会在接下来的教程中了解更多。
4、这里是详情面板,展示的是你正在使用的工具的主要信息。就现在而言,这里展示的是最”笨重(hottest)”的方法–换句话说,占用CPU时间最长的方法。点击上方的bar会看到Call Tree(左手边的那个)并选中Sample List,然后你会看到数据的不同视图。视图展示了每一个示例。点击其中几个,你会在Extended Detail inspector中看到被捕获的堆栈跟踪。
5、这里是检查器(inspector)面板,一共有三个检查器:record setting(记录设置),display setting(展示设置),还有extends detail(扩展详情)。一会你将了解更多关于这里面的一些选项。
Note:
Leaks工具智慧检查未引用的内存,而不会检查循环保留,而后者是常见的内存问题。它也不会检测没有成功释放的内存。不管是Leaks还是Allocations只会告诉我们那些地方分配了内存,但是分配的内存不一定是内存泄露的地方。
CPU问题
其中常用的有用来检测内存泄露的Leaks和查看CPU消耗情况的Time Profiler。下面介绍查看CPU使用情况的Time Profiler
选择 Detail -> Call Tree 表示查看整个调用过程有了上面的基础知识就可以对App的CPU消耗情况进行实时检测了。
常见的对CPU消耗过高的操作 加载图片两种不同方式在相同时间内的CPU消耗。
算法优化是性能局部优化的首选, 并常采用各种性能监控软件来度量CPU时间、内存占用率、函数调用次数以问题定位,然后实施各种调优方法,如优化循环、利用空间换时间、采用合适的数据结构等。但是算法本身的优化只能够帮助大家消除一些明显的编程细节引起的瓶颈,尤其单单通过算法优化的手段还不能完全解决性能问题,且具有非常大的难度。
运行环境与资源包括各种软硬件平台,硬件环境包括CPU、内存、磁盘以及网络等。最简单且最省事的调优方法是优化硬件资源,使用快速计算资源代替慢速计算资源,提升资源的计算能力。
我们还可以用Instruments进行disk和Network的分析。
这个博客对iOS常见性能列举挺详细,分享一下:
http://blog.csdn.net/ylgwhyh/article/details/52073036
产品是为了取悦用户才有存在价值。
设备是为了方便用户才有其价值。
要做到更好。
用户的体验质量才是最实际的。
关注能带来最大收益的方面。
iOS开发用到的性能优化的工具最典型的非Instruments莫属了。
Instruments
默认情况下,Instruments是在Release模式下编译构建的。这可能会表现跟Debug模式完全不同的性能,但我们可以修改成Debug模式就行了。
模拟器和设备的性能可能完全不同,大多数情况,只需要在设备上进行性能分析就行了。
Instruments经常在为当前应用查找符号时出现麻烦。通常需要通过File->Re->Symbolicate Document再次符号化文档。
内存问题
我做过C++项目之前也是内存问题,不管做什么方面的开发,内存泄露,溢出等都是很常见也是我们最重视的问题,下面看看iOS开发如何来解决内存问题。
我们可以实时看到内存的变换,会弹出一个框,问我们是否转换模式,选择是即可。
打开了我们的工具
1、这里控制记录过程,点击红色的”记录”按钮可以停止或开始当前正在分析的app(在记录和停止按钮之间切换),暂停键,如你所想,暂停当前正在运行的app。
2、这里是执行计时器(run timer),计时器记录着正在分析的app执行了多长时间、执行了多少次。如果你使用记录控制按钮来停止你的app,然后重启,这将创建一个新的运行记录,同时会显示”Run 2 of 2”。
3、这里被称作路径(track),就你选择的Time Profiler工具而言,因为只有一个工具,所以这里只有一条路径,关于这里显示的图标的详情,一会你就会在接下来的教程中了解更多。
4、这里是详情面板,展示的是你正在使用的工具的主要信息。就现在而言,这里展示的是最”笨重(hottest)”的方法–换句话说,占用CPU时间最长的方法。点击上方的bar会看到Call Tree(左手边的那个)并选中Sample List,然后你会看到数据的不同视图。视图展示了每一个示例。点击其中几个,你会在Extended Detail inspector中看到被捕获的堆栈跟踪。
5、这里是检查器(inspector)面板,一共有三个检查器:record setting(记录设置),display setting(展示设置),还有extends detail(扩展详情)。一会你将了解更多关于这里面的一些选项。
Note:
Leaks工具智慧检查未引用的内存,而不会检查循环保留,而后者是常见的内存问题。它也不会检测没有成功释放的内存。不管是Leaks还是Allocations只会告诉我们那些地方分配了内存,但是分配的内存不一定是内存泄露的地方。
CPU问题
其中常用的有用来检测内存泄露的Leaks和查看CPU消耗情况的Time Profiler。下面介绍查看CPU使用情况的Time Profiler
选择 Detail -> Call Tree 表示查看整个调用过程有了上面的基础知识就可以对App的CPU消耗情况进行实时检测了。
常见的对CPU消耗过高的操作 加载图片两种不同方式在相同时间内的CPU消耗。
算法优化是性能局部优化的首选, 并常采用各种性能监控软件来度量CPU时间、内存占用率、函数调用次数以问题定位,然后实施各种调优方法,如优化循环、利用空间换时间、采用合适的数据结构等。但是算法本身的优化只能够帮助大家消除一些明显的编程细节引起的瓶颈,尤其单单通过算法优化的手段还不能完全解决性能问题,且具有非常大的难度。
运行环境与资源包括各种软硬件平台,硬件环境包括CPU、内存、磁盘以及网络等。最简单且最省事的调优方法是优化硬件资源,使用快速计算资源代替慢速计算资源,提升资源的计算能力。
我们还可以用Instruments进行disk和Network的分析。
这个博客对iOS常见性能列举挺详细,分享一下:
http://blog.csdn.net/ylgwhyh/article/details/52073036
相关文章推荐
- iOS性能优化系列
- 利用预渲染解决优化性能问题IOS
- cocos2d-x之优化图形性能-IOS/Android
- iOS优化内存,提升性能 之一
- iOS优化内存,提升性能 之三
- [深入浅出Cocoa]iOS程序性能优化
- iphone ios 性能优化
- [深入浅出Cocoa]iOS程序性能优化
- ios的游戏性能优化技巧
- unity3d ios平台优化图形性能
- iOS开发那些事--性能优化–内存泄露问题的解决
- iOS开发那些事-性能优化–查找和解决僵尸对象
- iOS开发那些事--性能优化–内存泄露问题的解决
- [深入浅出Cocoa]iOS程序性能优化
- iOS开发那些事-性能优化–autorelease的使用问题
- iOS性能优化翻译稿(第二章,上)
- iOS开发那些事--性能优化–内存泄露问题的解决
- iOS开发那些事-性能优化–查找和解决僵尸对象
- iOS开发那些事--性能优化–内存泄露问题的解决
- iOS开发那些事-关于性能优化–选择nib还是故事板的讨论