asc photomath-2016 169

24
Optimiziranje mobilnih aplikacija Iskustva iz aplikacije Photomath Jurica Cerovec, 13. 04. 2016

Upload: jurica-cerovec

Post on 14-Apr-2017

232 views

Category:

Engineering


1 download

TRANSCRIPT

Optimiziranje mobilnih aplikacijaIskustva iz aplikacije Photomath

Jurica Cerovec, 13. 04. 2016

Instant rezultat za skenirani matematički zadatak

Ne zbog Photomatha!Razvijali smo business naše tvrtke MicroBlink.

Htjeli smo unaprijediti naše tadašnje proizvode.

Prvi naš proizvod - PhotoPay Computer vision tehnologija za mobilne uređaje

Optimiziranje mobilnih aplikacija- Optimiziranje korisničkog sučelja

- Optimiziranje mrežnih zahtjeva

- App store optimizacije

- Optimiziranje performansi client-side algoritama

Cilj:Poboljšati korisničko iskustvo i omogućiti funkcionalnosti koje bez optimizacija nisu moguće.

Rules of Optimization

- 2nd rule (for experts only!): Don't do it yet.

- 1st rule: Don't do it.

Jon Bentley: Programming Pearls (2nd Edition)

Osim ako vam kompletan proizvod ne ovisi o optimizacijama!

Načini optimizacija1. Odabir odgovarajuće tehnologije

2. Optimiranje složenosti algoritama

3. Pipelining obrade podataka 4. Assemblerske optimizacije

1. Odabir odgovarajuće tehnologije- HTML5, Javascript (Phonegap)

- C# (Xamarin)

- Java, Objective-C

- Swift, Kotlin

- C++, C

- Assembly

Photomath iOS (Objective C)

Photomath Android (Java)

Core components (C++) OCR, image processing, math solver

Objective C++ Java

Nati

ve

Interf

ace (

JNI)

2. Složenosti algoritma- Potrebno je znati koji algoritmi i strukture podataka su optimalni za vaše podatke

- Krivi odabir može rezultirati trzanjem i lošim korisničkim iskustvom

- Nitko ne želi koristiti aplikaciju koja ne radi glatko!

Složenost algoritama

Rezolucija 945x272 257.040 pixela

- Potrebno predobraditi sliku (image processing) - Segmentirati individualne znakove (image

processing) - Prepoznati o kojim znakovima se radi (machine

learning klasifikacija) - Spojiti znakove u matematički izraz (heuristika) - Riješiti matematički izraz i dobiti step-by-step

rješenje (eksperni sustav) - Izrenderirati matematički izraz i rješenje u sučelju

(LaTeX like rendering engine)

Sve to barem 3 puta u sekundi.

3. Pipelining obrade- Ako je potrebno obrađivati veću količinu podataka, pipeline obrade je iznimno bitan

- Dobar pipeline omogućuje obradu veće količine podataka

- Pipeliningom je moguće dobro iskoristiti nove višejezgrene procesore

Camera Queue

Frame Analysis Queue

Processing Queue

Main (Result) Queue

4. Assemblerske operacije

- Za najkritičnije dijelove source koda, one koji predstavljaju bottleneck u obradi

- dodatno optimiranje implementacijom u assembly jeziku

- komplicirano, ali potencijalno jako veliki benefiti!

Assemblerske operacije- Današnji compileri rade vrlo dobar posao u optimizaciji strojnog koda

- Assembly optimizacije potrebno je provoditi samo na zaista kritičnim mjestima

- Dodatni performance boost (do 4x!) može se dobiti korištenjem SIMD jedinice!

Bez mjerenja performansi optimizacija može biti potpuno

krivo ulaganje vremena

Mjerenje performansi

- Prije optimizacija, obavezno je mjerenje

- Subjektivno mjerenje - najvažnije!

- Profiliranje

- Timeri i specijalizirani alati (Traceview, Instruments)

Zaključak- Optimiziranje uvelike ovisi o

odabiru tehnologije s kojom radite

- Prije postupka optimiranja, bitno je obaviti mjerenja

- Optimiziranje može biti ključan korak u uspjehu vaše aplikacije

Photomath, Inc. MicroBlink, Ltd.

[email protected]

photomath.net/jobs microblink.com/jobs