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
70
Interconnect All the Things!
esttorhe
0
110
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
660
Xcode's 8 Source Editor Extensions
esttorhe
0
140
MVVM + RxSwift + DataControllers
esttorhe
0
530
Using Jekyll & Octopress
esttorhe
1
100
Other Decks in Technology
See All in Technology
AWS CDK コントリビュート はじめの一歩
yendoooo
1
110
お問い合わせ対応の改善取り組みとその進め方
masartz
0
160
RAGの基礎から実践運用まで:AWS BedrockとLangfuseで実現する構築・監視・評価
sonoda_mj
0
410
これからクラウドエンジニアになるために本当に必要なスキル 5選
hiyanger
1
460
技術的負債を正しく理解し、正しく付き合う #phperkaigi / PHPerKaigi 2025
shogogg
7
1.7k
LINE Notify互換のボットを作った話
kenichirokimura
0
140
一人QA時代が終わり、 QAチームが立ち上がった話
ma_cho29
0
230
モノリスの認知負荷に立ち向かう、コードの所有者という思想と現実
kzkmaeda
0
100
頻繁リリース × 高品質 = 無理ゲー? いや、できます!/20250306 Shoki Hyo
shift_evolve
0
140
Go の analysis パッケージで自作するリファクタリングツール
kworkdev
PRO
1
360
日本MySQLユーザ会ができるまで / making MyNA
tmtms
1
280
問題解決に役立つ数理工学
recruitengineers
PRO
5
250
Featured
See All Featured
Side Projects
sachag
452
42k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Designing for Performance
lara
605
69k
Testing 201, or: Great Expectations
jmmastey
42
7.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.3k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
How to train your dragon (web standard)
notwaldorf
91
5.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
102
18k
The World Runs on Bad Software
bkeepers
PRO
67
11k
The Invisible Side of Design
smashingmag
299
50k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
4 Signs Your Business is Dying
shpigford
183
22k
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 @esteban@mastodon.technology
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