美文网首页
性能优化面试题-入门级

性能优化面试题-入门级

作者: kadis | 来源:发表于2021-07-02 19:53 被阅读0次

在性能优化中一个最具参考价值的属性是 FPS:Frames Per Second,其实就是屏幕刷新率,苹果的 iphone

推荐的刷新率是 60Hz,也就是说 GPU 每秒钟刷新屏幕 60 次,这每刷新一次就是一帧 frame,FPS 也就是每

秒钟刷新多少帧画面。静止不变的页面 FPS 值是 0,这个值是没有参考意义的,只有当页面在执行动画或

者滑动的时候,FPS 值才具有参考价值,FPS 值的大小体现了页面的流畅程度高低,当低于 45 的时候卡顿

会比较明显。

图层混合:

每一个 layer 是一个纹理,所有的纹理都以某种方式堆叠在彼此的顶部。对于屏幕上的每一个像素,GPU 需

要算出怎么混合这些纹理来得到像素 RGB 的值。

当 Sa = 0.5 时,RGB 值为(0.5, 0, 0),可以看出,当两个不是完全不透明的 CALayer 覆盖在一起时,GPU 大量做

这种复合操作,随着这中操作的越多,GPU 越忙碌,性能肯定会受到影响。

公式:

R = S + D * ( 1 – Sa )

结果的颜色是源色彩(顶端纹理)+目标颜色(低一层的纹理)*(1-源颜色的透明度)。

当 Sa = 1 时,R = S,GPU 将不会做任何合成,而是简单从这个层拷贝,不需要考虑它下方的任何东西(因为都

被它遮挡住了),这节省了 GPU 相当大的工作量。

一、入门级

1、用 ARC 管理内存

2、在正确的地方使用 reuseIdentifier

3、尽量把 views 设置为透明

4、避免过于庞大的 XIB

5、不要阻塞主线程

6、在 ImageViews 中调整图片大小。如果要在 UIImageView 中显示一个来自 bundle 的图片,你应保证图片

的大小和 UIImageView 的大小相同。在运行中缩放图片是很耗费资源的,特别是 UIImageView 嵌套在

UIScrollView 中的情况下。如果图片是从远端服务加载的你不能控制图片大小,比如在下载前调整到合适大

小的话,你可以在下载完成后,最好是用 background

thread,缩放一次,然后在 UIImageView 中使用缩放后的图片。

7、选择正确的 Collection。

 Arrays: 有序的一组值。使用 index 来 lookup 很快,使用 value lookup 很慢, 插入/删除很慢。

 Dictionaries: 存储键值对。 用键来查找比较快。

 Sets: 无序的一组值。用值来查找很快,插入/删除很快。8、打开 gzip 压缩。app 可能大量依赖于服务器资源,问题是我们的目标是移动设备,因此你就不能指望网

络状况有多好。减小文档的一个方式就是在服务端和你的 app 中打开 gzip。这对于文字这种能有更高压缩

率的数据来说会有更显著的效用。

iOS 已经在 NSURLConnection 中默认支持了 gzip 压缩,当然 AFNetworking 这些基于它的框架亦然。

相关文章

网友评论

      本文标题:性能优化面试题-入门级

      本文链接:https://www.haomeiwen.com/subject/pudyultx.html