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
140
0
Share
Pedal to the Metal - Aftermath
Journey SoundCloud had to undergo when improving the iOS launch times.
Esteban Torres
January 19, 2019
More Decks by Esteban Torres
See All by Esteban Torres
Pedal to the Metal
esttorhe
0
100
Interconnect All the Things!
esttorhe
0
150
Facing the VIPER
esttorhe
2
230
MVVM(DC): Taming your architecture
esttorhe
1
200
Hacking SiriKi - Mobilization 2016
esttorhe
1
5.2k
MVVM + RxSwift + DataControllers
esttorhe
1
760
Xcode's 8 Source Editor Extensions
esttorhe
0
170
MVVM + RxSwift + DataControllers
esttorhe
0
580
Using Jekyll & Octopress
esttorhe
1
150
Other Decks in Technology
See All in Technology
Oracle Cloud Infrastructure:2026年3月度サービス・アップデート
oracle4engineer
PRO
0
340
Zephyr(RTOS)でOpenPLCを実装してみた
iotengineer22
0
180
出版記念イベントin大阪「書籍紹介&私がよく使うMCPサーバー3選と社内で安全に活用する方法」
kintotechdev
0
140
BFCacheを活用して無限スクロールのUX を改善した話
apple_yagi
0
140
Cortex Code君、今日から内製化支援担当ね。
coco_se
0
220
CloudFrontのHost Header転送設定でパケットの中身はどう変わるのか?
nagisa53
1
250
推し活エージェント
yuntan_t
1
680
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
77k
Databricks Lakebaseを用いたAIエージェント連携
daiki_akimoto_nttd
0
130
Goビルドを理解し、 CI/CDの高速化に挑む
satoshin
0
110
JSTQB Expert Levelシラバス「テストマネジメント」日本語版のご紹介
ymty
0
120
OPENLOGI Company Profile
hr01
0
83k
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
240
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
480
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Code Review Best Practice
trishagee
74
20k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
340
For a Future-Friendly Web
brad_frost
183
10k
A Tale of Four Properties
chriscoyier
163
24k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
250
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
230
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
200
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