30
JSON, Memory Usage & Interaction Design Experience in Boosting Performance for an iOS / Android Application Lucas Nguyen VINOVA Pte. Ltd. [email protected]

Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

Embed Size (px)

DESCRIPTION

Bài chia sẻ của anh Nguyễn Vũ Long (Lucas Nguyen) đến từ Vinova tại hội thảo Vietnam Mobile Day 2013 tổ chức tại Hà Nội vào ngày 11/05/2013.

Citation preview

Page 1: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

JSON, Memory Usage & Interaction Design Experience in Boosting Performance for an iOS / Android Application

Lucas Nguyen VINOVA Pte. Ltd. [email protected]

Page 2: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

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

Page 3: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

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  

Page 4: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

Great Client

Singapore Press Holdings (SPH) - Southeast Asia’s Leading Media Organization

Page 5: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

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

Page 6: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

MISSION

Revamp a very popular iOS & Android app to serve end-users better, faster!

STOMP v1 STOMP v2

Page 7: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

Old Version

Page 8: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

New version

Challenges: •  Complex Design •  Lots of Advertisement Banners •  Old, Slow & Heavy APIs (14.7MB of XML in total)

Page 9: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

1-Star Rating User Complains

Client’s Dissatisfaction App Crashes & Hangs

When We Took Over The Project

Page 10: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

What Did We Think?

F i n d       t h e         s o l u t i o n  

Page 11: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

How Did We Solve The Problem?

1 2 3

Page 12: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

XML to JSON Conversion

•  Heavy •  Slow •  Uncontrolled

•  Light •  Fast •  Controlled

Lightning Server

Page 13: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

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: […]!}!

Page 14: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

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

Page 15: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

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

Page 16: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

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

Page 17: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

Watch Out for Memory Usage

Memory Usage

Page 18: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

Memory Allocation

100  MB    

20  MB  

using allocate

10  MB  using allocate

20  MB  

Before  

AHer  

Page 19: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

Load remote data one-by-one

If load 3 ~ 5 categories at the same time à Allocate 10MB ~ 25MB simutaneously à Memory Warning

Page 20: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

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

Page 21: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

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

Page 22: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

ad banners take LotS of memory

1MB  Image  +  

memory  for  Views  

Page 23: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

Interaction DesiGn

Don’t Follow the

Design Strictly

Page 24: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

One mission per screen

One  big  screen:  ArTcle  +  Comments  

ArTcle   Comments  

Separate  

•  Not everyone needs to see comments

•  Better UX •  Lighter UI

Page 25: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

User is touching, not clicking, make it easy

•  Original designed button is small à hard to see and touch

•  Make it wider!

Original Wider

Page 26: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

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

Page 27: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

Don’t Believe in Anything ...

•  No assumptions

•  Update 3rd party libraries usually

•  APIs won’t work 100%

•  Handle exceptions

Page 28: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

Thank you!

Page 29: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

http://vinova.sg/summerschool http://vinova.sg/internship

ĐÔI LỜI NHẮN NHỦ CÁC BẠN SINH VIÊN

Page 30: Vietnam Mobile Day 2013: JSON, Memory Usage & Interaction Design

Vibrant Innovators

Những người đổi mới đầy nhiệt huyết