V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Valyrian
V2EX  ›  iOS

iOS 12 是如何解决 UI 卡顿、掉帧的

  •  2
     
  •   Valyrian · 2018-06-08 04:15:50 +08:00 · 6725 次点击
    这是一个创建于 2396 天前的主题,其中的信息可能已经有所发展或是发生改变。
    10 条回复    2018-06-09 08:40:55 +08:00
    shutongxinq
        1
    shutongxinq  
       2018-06-08 08:04:20 +08:00 via iPhone
    对于里面的第三点:即使在顶尖的地方,我也经常看见很多文盲把 O(N) 写成 O(N^2)而且不自知。主要感觉很多人没有正确的直觉一个问题大致能提出怎么样复杂度的算法,结果脑子一拍就写出来交差了。至于通信开销省下来能起多大效果啊,shared memory cache hit 该怎么提高啊,大多数人更没有什么感觉根本不注意😂😂😂
    Mutoo
        2
    Mutoo  
       2018-06-08 08:10:19 +08:00
    a.k.a iOS10 是如何制造 UI 卡顿、掉帧的
    Valyrian
        3
    Valyrian  
    OP
       2018-06-08 08:13:21 +08:00
    @shutongxinq 把逻辑写对谁都会,优化算法确实需要技术实力。。
    luoerxiansheng
        4
    luoerxiansheng  
       2018-06-08 14:13:37 +08:00
    time.sleep(10) 改成 time.sleep(4)
    LeoNG
        5
    LeoNG  
       2018-06-08 16:25:40 +08:00
    开除阿三(逃~
    tianjn
        6
    tianjn  
       2018-06-08 17:57:14 +08:00
    @shutongxinq WWDC 一个 session (what's new in cocoa touch)明说了,iOS11 的 auto-layout 不是 O(n^2),是指数…我挺佩服他们敢说出来的,真不怕友商戳脊梁骨
    Building
        7
    Building  
       2018-06-08 21:46:07 +08:00 via iPhone
    翻译一下: 我们以前挖了很多坑,现在终于有时间填上一些了。
    kojirou
        8
    kojirou  
       2018-06-08 23:06:50 +08:00
    @tianjn 阿三给力
    shutongxinq
        9
    shutongxinq  
       2018-06-08 23:39:51 +08:00 via iPhone
    @tianjn 这个 reddit 帖子的第三点就讲的你说的这个 session。
    zitengdu
        10
    zitengdu  
       2018-06-09 08:40:55 +08:00   ❤️ 1
    以下为拷贝内容[cnbeta]( https://www.cnbeta.com/articles/soft/734595.htm)

    此外,一名 [Reddit]( https://www.reddit.com/r/apple/comments/8p74zh/wwdc_insight_how_dropped_frames_are_finally_being/) 用户完美解释了苹果的演讲内容,并剖析了 iOS 12 是如何(至少在理论上)带来更快的 app 体验的。

    > 苹果一直在研究各种方法,以确保当用户浏览一款 app 时,iPhone 已经做好了提供一致性能的准备,而无需面对掉帧或滚动问题。

    [![img]( https://static.cnbetacdn.com/article/2018/0608/db365941a0fb9e2.jpg)]( https://boygeniusreport.files.wordpress.com/2018/06/ios-12-speed-app-performance-scrolling-1.jpg)

    **正如你可能已经猜到的那样,这一切都与设备资源的使用方式有关,即 CPU、GPU、内存、甚至电池。**

    > 为避免滚屏方面的问题,CPU 会在显示接下来的内容之前,预先执行加载。而在过去,CPU 需要同时执行这两项任务,结果就是可能导致体验缓慢。

    Craig Federighi 在演讲期间曾暗示,**优化过后,CPU 现已能够提升大幅在的响应速度,增加处理额外工作时的始终速率、然后尽可能快地返回闲置状态,**以确保电池续航不受影响。

    > iOS 12 还对自动布局框架进行了重大优化,允许 iOS 在屏幕上自动排列 app 元素,而不用考虑设备的类型(比如 iPhone / iPad ),节省人员的额外工作。
    >
    > 通过这种方式,iOS 12 巧妙地释放了 CPU 和 GPU 的资源,让它们在其它地方发挥更重要的作用。

    **此外 iOS 12 在执行任务的时候,还会让 app 使用更少的内存。**

    > Apple Insider 详细介绍了这项改进,它被称作 [Automatic Backing Stores]( https://appleinsider.com/articles/18/06/07/how-apple-is-making-animations-smoother-in-ios-12) 。通过深度定义文件的使用(而不是里面的内容),它可以减少内存使用。
    >
    > 比如苹果在舞台上展示了一对彩色和灰度的照片,但两者都消耗了同样多的内存。

    **这些底层方面的改进,显然会让 iOS 12 在基于 A12 平台的新硬件上运行得更棒。**

    > 最令人欣慰的是,苹果在 iOS 12 的首个测试版本中就带来了这么大的惊喜 —— 运行速度比 iOS 11.4 快很多、而且几乎没有稳定性问题。

    **在 Android 厂商拼命堆运存( RAM )容量的同时,苹果仍然更看重优化的体验:**

    > 当前市面上已经有不少 6GB、甚至 8GB RAM 的 Android 旗舰设备,但今年推出的 A12 iPhone 机型,入门款可能为 3GB RAM、高端款也才 4GB RAM。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2490 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:37 · PVG 23:37 · LAX 07:37 · JFK 10:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.