美文网首页
WWDC 2019 Optimizing App Launch

WWDC 2019 Optimizing App Launch

作者: Jerrydu96 | 来源:发表于2019-07-15 16:43 被阅读0次

    Why Launch Is Important

    First experience with your app should be delightful
    Indicative of your codes overall performance
    Impacts the system performance and battery

    Phases of App Launch

    App运行的步骤

    System Interface
    Runtime Init
    UIKit Init
    Application Init
    Initial Frame Render
    Extended

    System Interface

    DYLD3
    Dynamic Linker loads shared libraries and frameworks
    Introduces caching of runtime dependencies to improve warm launch

    ps: should go to see that
    App Startup Time: Past, Present, and Future WWDC 2017

    Some steps to optimizing for DYLD3

    Avoid linking unused frameworks
    Avoid dynamic library loading during launch
    Hard link all your dependencies

    For libSystem Init

    Initializes the interfaces with low level system components
    System side work with a fixed cost

    Static Runtime Initialization

    Steps to do:

    Initializes the language runtime
    Invokes all class static load methods

    Ways to optimizing:

    Expose delicate initialization API in frameworks
    Reduce impact to launch by avoiding + [Class load]
    Use + [Class initialize]to lazily conduct static initialization

    UIKit Initialization

    Steps to do:
    Instantiates the UIApplication And UIApplicationDelegate
    Begins event processing and integration with the system

    Ways to optimizing:
    Minimize work in UIApplication subclass
    Minimize work in UIApplicationDelegateinitialization

    Application Initialization

    Lifecycle Callbacks

    Invokes UIApplicationDelegate app lifecycle callbacks
    application:willFinishLaunchingWithOptions:
    application:didFinishLaunchingWithOptions:
    
    Invokes UIApplicaitonDelegate UI lifecycle callbacks
    applicationDidBecomaActive:
    
    Invokes UIScreenDelegate UI lifecycle callbacks for each scene
    scene:willConnectToSession:options:
    scene:willEnterForeground:
    sceneDidBecomeActive:
    
    Ways to optimizing:

    Defer unrelated work
    share resources between scenes

    First Frame Render

    Creates, performs layout for, and draws views
    Commits and renders first frame

    loadView
    viewDidLoad
    layoutSubviews
    

    Ways to optimizing:

    Flatten view hierarchies and lazily load views
    Optimize auto layout usage

    Extended

    Leverage os_signpost to messurework

    Measuring Performance Using Logging WWDC 2018
    
    Trading Representativeness for Consistency

    Remove sources of variance to produce mode consistent results
    May result in launch times that are not representative
    Use consistent results to evaluate progress

    Test in a Clean and Consistent Environment

    Reboot then let system quiesce for 2-3 minutes
    Enable Airplane Mode or mock the network
    Use unchanging or no iCloud Account
    Use release build of your app
    Measure warm launches

    Measuring Launch with XCTest
    Improving Battery Life and Performance WWDC 2019
    

    Use Instruments to profile your launch

    Tips and Tricks:

    1. Minimize
      Defer work unrelated to first frame
      Move blocking work off main thread
      Reduce memory usage
    2. Prioritize
      Identify the right QoS for your task
      Utilize scheduler optimizations for app launch
      Preserve the priority with the right primitives
    Modernizing Grand Central Dispatch Usage WWDC 2017
    
    1. Optimize
      Simplify or limit existing work
      Optimize algorithms and data structures
      Cache resources and computations

    Track Your Launch Over Time

    Make performance a development-time priority
    Plot it and have a target

    Monitor Customer Launches with Xcode Organizer
    Adopt MetricKit for More Statistics

    Collect custom power and performance metrics
    Aggregated results delivered every 24 hours

    Summary

    Start understanding your launch today
    Measure---dong't estimate---performance
    Track performance in all phases of development

    相关文章

      网友评论

          本文标题:WWDC 2019 Optimizing App Launch

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