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
JSON, Memory Usage & Interaction Design
Search
Vinova
May 11, 2013
0
290
JSON, Memory Usage & Interaction Design
Experience in Boosting Performance for an iOS / Android Application
Vinova
May 11, 2013
Tweet
Share
More Decks by Vinova
See All by Vinova
Làm Mobile Game - Từ góc nhìn của một team tươi trẻ
vinova
0
120
Fast track tới thành công
vinova
0
220
Vinova Mobile Portfolio 2013
vinova
2
180
Vinova Web Portfolio 2013
vinova
0
61
Vinova Design Portfolio 2012
vinova
0
120
Anh em ta làm game
vinova
2
460
Chinh phục nhà tuyển dụng?
vinova
1
390
Benefits of using MongoDB: Reduce Complexity & Adapt to Changes
vinova
1
160
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
The Language of Interfaces
destraynor
155
24k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Building Your Own Lightsaber
phodgson
104
6.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
It's Worth the Effort
3n
183
28k
Why Our Code Smells
bkeepers
PRO
335
57k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
Transcript
JSON, Memory Usage & Interaction Design Experience in Boosting Performance
for an iOS / Android Application Lucas Nguyen VINOVA Pte. Ltd.
[email protected]
About VINOVA • Vinova = Vibrant Innovators – iOS /
Android / Windows Phone – For Singapore Enterprises & Organizations • 2010 Founded in Singapore • 2011 Representative Office in Hanoi • 2012+ Push for Mobile Game
About ME • Lead Mobile Developer at VINOVA • 3-year
experience on Native iOS, Android, and Cross-Platform Technologies • Backend Web Services using Ruby on Rails Lucas Nguyen
Great Client Singapore Press Holdings (SPH) - Southeast Asia’s
Leading Media Organization
Big PROJECT • Straits Times Online Mobile Print (STOMP) •
Award-winning website & mobile app • Singaporean connecting, engaging and interacting • 0.5m concurrent users at peak hours • 1.8m page-views per day
MISSION Revamp a very popular iOS & Android app to
serve end-users better, faster! STOMP v1 STOMP v2
Old Version
New version Challenges: • Complex Design • Lots of Advertisement
Banners • Old, Slow & Heavy APIs (14.7MB of XML in total)
1-Star Rating User Complains Client’s Dissatisfaction App Crashes & Hangs
When We Took Over The Project
What Did We Think? F i n d
t h e s o l u t i o n
How Did We Solve The Problem? 1 2 3
XML to JSON Conversion • Heavy • Slow • Uncontrolled
• Light • Fast • Controlled Lightning Server
Remove reduntdant data • Full image URLs? NO! • Just
need [id] and [token] to regenerate the URL – thumbnail: http://dswww.stomp.com.sg/site/servlet/ iphone/photo?photoId=#{id} – image: http://static.stomp.com.sg/site/servlet/ linkableblob/stomp/#{id}/data/#{token}-data.jpg {! id: "1668324” ! title: ”Butter Factory’s…”,! thumbnails: […],! images: […]! }!
JSON Optimization Article items: • Small • A lot •
Need to parse first! à Keep raw Article detail: • Big • Need one at a time • Have more time to parse à Gzip to binary à Encode base64
Our JSON format • Primary data for main screen (categories
& articles listing) • Secondary data for article detail screen {! id: "1668324” ! title: ”Butter Factory’s…”,! }! "eNp1VF2v2zYM/SuEnzYgTfz90bcVaDdcoN...“ {! "date" => "26 Mar 2013",! "views" => "16160",! "comments" => "53",! "content" => ”A 61-year-old retiree…”,! "photos" => [...]! }! Unpacked
Best compression method Format Size (MB) % Remaining
Raw XML 14.7 MB 100% (1) Compact JSON 6.0 MB 40% (2) Compressed & Compact JSON 3.8 MB 25% (3) Compressed & Compact BSON 2.9 MB 20% Best of both worlds: • ¼ size reduced • Easy to read • Easy to decode with popular libs • Much Faster & Lighter APIs • Easier to scale (using CDN) • Smaller Mobile Memory Usage
Watch Out for Memory Usage Memory Usage
Memory Allocation 70 MB 20 MB using
allocate 10 MB using allocate 20 MB Before AHer
Load remote data one-by-one If load 3 ~ 5 categories
at the same time à Allocate 10MB ~ 25MB simutaneously à Memory Warning
Release memory allocated for off-screen list items Smartphone’s screen is
small à No need to show more than 5 categories at once à Release all invisible components to reduce memory usage 1 2 3 4 5
Photos are dangrous, just like girls • Only load visible
photos! • Large photo is beautiful, but: – Take more bandwidth – Take more memory & GPU to render Photos Quan9ty Avg. Size Memory Usage high res. 20 ~ 24 ~30KB 10MB ~ 15MB low res. 20 ~ 24 ~05KB 03MB ~ 04MB
ad banners take LotS of memory 1MB Image +
memory for Views
Interaction DesiGn Don’t Follow the Design Strictly
One mission per screen One big screen: ArTcle +
Comments ArTcle Comments Separate • Not everyone needs to see comments • Better UX • Lighter UI
User is touching, not clicking, make it easy • Original
designed button is small à hard to see and touch • Make it wider! Original Wider
Test on low-end devices iPhone-5 iPhone-4S iPhone-4 iPhone-3GS 1GB 512
MB 512 MB 256 MB Dual-core 1.2 GHz Dual-core 1 GHz 1 GHz 600 MHz
Don’t Believe in Anything ... • No assumptions • Update
3rd party libraries usually • APIs won’t work 100% • Handle exceptions
Thank you!
http://vinova.sg/summerschool http://vinova.sg/internship ĐÔI LỜI NHẮN NHỦ CÁC BẠN SINH VIÊN
Vibrant Innovators Những người đổi mới đầy nhiệt huyết