iOS开发 性能优化

425 阅读3分钟

当我们在谈论性能优化时,我们在说什么? CPU 内存 网络 I/O 大家有没有发现,以上4点对应计算机的基本组成原理,在谈论性能优化时,其实就是在说计算机的瓶颈!,所以,当在谈论性能优化时,我们可以做的,就是把计算机的瓶颈提高或转化。

单一 CPU 处理不过来,我们新加 GPU;一个 CPU 处理不来,我们8核、16核心!多核 CPU 处理不过来,我们可以集群!分布式!云化!

当内存不足时,我们加内存!内存压缩!内存置换!

当网络带宽不够时,我们加带宽!我们加服务器!我们加异地多端!

当I/O过高时,我们取舍I或O!我们把I和O拆分!

在深入到程序、代码中,所有的优化,是不是也一样,你要减少计算和循环次数,你要节省内存开销!你要网络数据缓存!你要定量定时入库!

所有的性能优化,不过如此!大家明白了吗?

移动设备时代,性能问题还有一个就是在小的空间里没有大的电池,其实就是电池的瓶颈!但是一般开发者并不关心,因为他们感觉自己只是开发App,使用App的是用户和他们的手机设备!电池的瓶颈有消耗和损耗2个问题,消耗是我们写的程序在实现功能的同时能不能减少计算量,损耗是我们写了一些我们并不需要的代码导致了不必要的计算量。如果平时有注意的,2015年时三星手机针对那么功耗过大的App 直接强制退出,这可能也是大家说的对中国本地化做不好的原因导致失败吧?因为优化是不是真的为了解决卡顿或性能,就一定要为所欲为呢?这也是开发者需要思考的问题。电池技术当下没有突破的时候,电量依然是非常值得关注的事情。现在iOS 和 Android 都开始统计App的电量使用情况,所以不从现在开始节能,你的App可能就被用户删除。当然,针对这些问题,iOS/macOS 系统苹果做了很多系统层级的优化,这也许也是很少开发者关心的原因,感兴趣的可以看看历年 WWDC - Apple Developer,苹果很多关于电量节能有很多策略可以借鉴。

换空间 压缩 分片 索引 上面说到的性能优化,从大方向时如此,然后细化到具体,会有非常多的算法或技巧,其中换空间就是一个经典的问题。

大家一定听说过类似:

“20张100MB的图片,怎么显示在1G内存的设备上” “在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。” “给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?” 这些问题,其实解法,基本上可以用上面3个方法!

大家明白了吗?建立你自己的开发知识体系!其实并不难,学习是没有捷径,但有方法!,所以,了解和掌握更多的方法论,构建自己的知识体系树,这样,才是不用被动的每天在各种各样的文章中,人浮于事!