Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pedal to the Metal - Aftermath
Search
Esteban Torres
January 19, 2019
Technology
0
110
Pedal to the Metal - Aftermath
Journey SoundCloud had to undergo when improving the iOS launch times.
Esteban Torres
January 19, 2019
Tweet
Share
More Decks by Esteban Torres
See All by Esteban Torres
Pedal to the Metal
esttorhe
0
72
Interconnect All the Things!
esttorhe
0
120
Facing the VIPER
esttorhe
2
200
MVVM(DC): Taming your architecture
esttorhe
1
180
Hacking SiriKi - Mobilization 2016
esttorhe
1
5.1k
MVVM + RxSwift + DataControllers
esttorhe
1
680
Xcode's 8 Source Editor Extensions
esttorhe
0
150
MVVM + RxSwift + DataControllers
esttorhe
0
540
Using Jekyll & Octopress
esttorhe
1
110
Other Decks in Technology
See All in Technology
What's new in OpenShift 4.19
redhatlivestreaming
1
230
AIエージェントの継続的改善のためオブザーバビリティ
pharma_x_tech
6
1.1k
Amazon Q Developer for GitHubとAmplify Hosting でサクッとデジタル名刺を作ってみた
kmiya84377
0
3.5k
IAMのマニアックな話 2025を執筆して、 見えてきたAWSアカウント管理の現在
nrinetcom
PRO
4
550
工具人的一生: 開發很多 AI 工具讓我 慵懶過一生
line_developers_tw
PRO
0
140
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
12k
ゆるSRE #11 LT
okaru
1
590
型システムを知りたい人のための型検査器作成入門
mame
15
3.8k
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
230
AWS と定理証明 〜ポリシー言語 Cedar 開発の舞台裏〜 #fp_matsuri / FP Matsuri 2025
ytaka23
9
2.4k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
SFTPコンテナからファイルをダウンロードする
dip
0
180
Featured
See All Featured
Side Projects
sachag
454
42k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
650
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
Building Applications with DynamoDB
mza
95
6.4k
Raft: Consensus for Rubyists
vanstee
139
7k
How GitHub (no longer) Works
holman
314
140k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Transcript
Pedal to the Metal Esteban Torres • Core Clients @
SoundCloud • @esttorhe
Pedal to the Metal - AFTERMATH Esteban Torres • Core
Clients @ SoundCloud • @esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
! Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Sequel Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
⾠ Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Context Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Planning @ SoundCloud Esteban Torres • Core Clients @ SoundCloud
• @esttorhe
the bet Esteban Torres • Core Clients @ SoundCloud •
@esttorhe
Improve iOS launch time Esteban Torres • Core Clients @
SoundCloud • @esttorhe
iOS branch Core Clients Esteban Torres • Core Clients @
SoundCloud • @esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Impossibility Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Check the code 1. Grab start timestamp 2. Grab end
timestamp 3. Diff 4. Multiply by a 1000 5. Send Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Check the code 1. Grab start timestamp 2. Grab end
timestamp 3. Diff 4. Multiply by a 1000 5. Send Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Over 5 seconds Esteban Torres • Core Clients @ SoundCloud
• @esttorhe
7,000,000 milliseconds Esteban Torres • Core Clients @ SoundCloud •
@esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
context Esteban Torres • Core Clients @ SoundCloud • @esttorhe
App then Esteban Torres • Core Clients @ SoundCloud •
@esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
App now Esteban Torres • Core Clients @ SoundCloud •
@esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
more context Esteban Torres • Core Clients @ SoundCloud •
@esttorhe
Instruments Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
1. Startup Operations 2. ViewController 4. Profit?? Esteban Torres •
Core Clients @ SoundCloud • @esttorhe
! Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Main thread Esteban Torres • Core Clients @ SoundCloud •
@esttorhe
! Esteban Torres • Core Clients @ SoundCloud • @esttorhe
! Esteban Torres • Core Clients @ SoundCloud • @esttorhe
How about that ViewController Esteban Torres • Core Clients @
SoundCloud • @esttorhe
even more context Esteban Torres • Core Clients @ SoundCloud
• @esttorhe
Mirroring & you Esteban Torres • Core Clients @ SoundCloud
• @esttorhe
⚡" Esteban Torres • Core Clients @ SoundCloud • @esttorhe
What now !? Esteban Torres • Core Clients @ SoundCloud
• @esttorhe
Total pre-main time: 2.0 seconds (100.0%) dylib loading time: 355.67
milliseconds (17.0%) rebase/binding time: 1.3 seconds (63.5%) ObjC setup time: 186.10 milliseconds (8.9%) initializer time: 218.53 milliseconds (10.4%) slowest intializers : libSystem.dylib : 5.52 milliseconds (0.2%) <Redacted> : 51.01 milliseconds (2.4%) MediaServices : 57.60 milliseconds (2.7%) SoundCloud : 182.43 milliseconds (8.7%) Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Enter Static Frameworks Esteban Torres • Core Clients @ SoundCloud
• @esttorhe
Total pre-main time: 563.45 milliseconds (100.0%) dylib loading time: 111.39
milliseconds (19.7%) rebase/binding time: 151.48 milliseconds (26.8%) ObjC setup time: 148.33 milliseconds (26.3%) initializer time: 152.08 milliseconds (26.9%) slowest intializers : libSystem.dylib : 3.37 milliseconds (0.5%) <Redacted> : 46.06 milliseconds (8.1%) MediaServices : 25.92 milliseconds (4.6%) SoundCloud : 148.34 milliseconds (26.3%) Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Resources & Static Frameworks Esteban Torres • Core Clients @
SoundCloud • @esttorhe
Including Frameworks Esteban Torres • Core Clients @ SoundCloud •
@esttorhe
Takeaways Esteban Torres • Core Clients @ SoundCloud • @esttorhe
1. Parallelize* * Also with care Esteban Torres • Core
Clients @ SoundCloud • @esttorhe
2. Instruments is your friend Esteban Torres • Core Clients
@ SoundCloud • @esttorhe
3. Static Frameworks* * Also with care Esteban Torres •
Core Clients @ SoundCloud • @esttorhe
4. Assume no ill-intention Esteban Torres • Core Clients @
SoundCloud • @esttorhe
Links · Automatic's blogpost about static frameworks 1 · Keith
Smiley's LD python script 2 · CocoaPods 1.5.0 release notes 3 3 http://blog.cocoapods.org/CocoaPods-1.5.0/ 2 https://github.com/keith/swi"-staticlibs 1 https://blog.automatic.com/how-we-cut-our-ios-apps-launch-time-in-half-with-this-one-cool-trick-7aca2011e2ea Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Xiè xiè · Github / Twitter @esttorhe - Mastodon @
[email protected]
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
We are hiring Esteban Torres • Core Clients @ SoundCloud
• @esttorhe
Esteban Torres • Core Clients @ SoundCloud • @esttorhe
Xiè xiè Esteban Torres • Core Clients @ SoundCloud •
@esttorhe