Slide 1

Slide 1 text

App Startup Time: Optimization & Monitoring Daiki Matsudate,@d_date, iOS Freelancer Developer SWWDC x AKIBA.swift in Sendai

Slide 2

Slide 2 text

Daiki Matsudate,@d_date • iOS Freelancer • Supporting Realm as News Translator • Organizer of CLEM • WWDC17 Attendee

Slide 3

Slide 3 text

SWWDC

Slide 4

Slide 4 text

WWDC

Slide 5

Slide 5 text

WWDC17

Slide 6

Slide 6 text

WWDC17 • Back to San Jose • Over 3,000 attendee • Over 200 sessions / labs / events

Slide 7

Slide 7 text

Sessions • Frameworks • Design • Developer Tools • Distribution • Featured • Graphics and Games • Media • System Frameworks

Slide 8

Slide 8 text

Developer Tools Localizing Swift Debugging Xcode9 Github Undefined Behavior Playgrounds Testing LLVM Interface Builder App Startup Time Testability

Slide 9

Slide 9 text

Developer Tools Localizing Swift Debugging Xcode9 Github Undefined Behavior Playgrounds Testing LLVM Interface Builder App Startup Time Testability

Slide 10

Slide 10 text

Recognition • ը૾ͷࢹೝ … 13ms • ϑΥʔΧεઌͷܾఆ…100 - 140ms • ૢ࡞͕ྲྀΕʹ৐͍ͬͯΔ…200 - 1000ms • ڵຯͷର৅͕ଞʹҠΔ… 1000 - 10000ms • ؔ৺͕ࣦΘΕΔ … 10000ms - 2014 MIT Research

Slide 11

Slide 11 text

Recognition • ը૾ͷࢹೝ … 13ms • ϑΥʔΧεઌͷܾఆ…100 - 140ms • ૢ࡞͕ྲྀΕʹ৐͍ͬͯΔ…200 - 1000ms • ڵຯͷର৅͕ଞʹҠΔ… 1000 - 10000ms • ؔ৺͕ࣦΘΕΔ … 10000ms - 2014 MIT

Slide 12

Slide 12 text

App Startup Time • Do less! • Embed fewer dylibs • Declare classes/methods • Use fewer initializers • Use more Swift • No initializers • Swift size improvements

Slide 13

Slide 13 text

Monitoring • In Development • Use DYLD_PRINT_STATISTICS • Initializer Calls • After Release • Firebase Performance Monitoring How to

Slide 14

Slide 14 text

Initializer Calls • Available on iOS 11 and macOS High Sierra • Provides precise timing for each static initializer • Available through Instruments

Slide 15

Slide 15 text

Initializer Calls Demo

Slide 16

Slide 16 text

Firebase

Slide 17

Slide 17 text

• Google I/O 2017 Ͱൃද • iOS / Android ྆ରԠ Firebase Performance

Slide 18

Slide 18 text

• ΞϓϦىಈ࣌ؒ, HTTP/S network requestͳͲΛ ࣗಈͰܭଌ • ΞϓϦͷύϑΥʔϚϯεͷվળՕॴ͕Θ͔Δ • ΞϓϦʹ߹ΘͤͯܭଌΛΧελϚΠζͰ͖Δ Firebase Performance

Slide 19

Slide 19 text

Firebase Performance Install pod ‘Firebase/Monitoring’ Podfile

Slide 20

Slide 20 text

Firebase Performance Demo

Slide 21

Slide 21 text

Summary • fewer dylibs, classes/methods, initializer • Use more Swift • App startup time monitoring • Use DYLD_PRINT_STATISTICS • Initializer Calls - Instruments (iOS 11~) • Firebase Performance Monitoring

Slide 22

Slide 22 text

Resources App Startup Time:Past, Present, and Future WWDC 2017 Optimizing App Startup Time WWDC 2016 Firebase Performance Monitoring

Slide 23

Slide 23 text

SWWDC x AKIBA.swift in Sendai