vietnam mobile day 2013: json, memory usage & interaction design

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

Upload: gamelandvn

Post on 02-Jul-2015

799 views

Category:

Technology


1 download

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.

TRANSCRIPT

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