SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Optimiziranje mobilnih aplikacija
Iskustva 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 optimizacija
1. 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
O
bjective
C++
Java
N
ative
Interface
(JN
I)
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.
jurica.cerovec@microblink.com
photomath.net/jobs
microblink.com/jobs

Mais conteúdo relacionado

Semelhante a Asc photomath-2016 169

[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016 [ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016 Stipe Predanic
 
Angular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayAngular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayNETMedia
 
UPD (2).pptx.oasfasfccccccccccccccccccccccccccccccccccccccc
UPD (2).pptx.oasfasfcccccccccccccccccccccccccccccccccccccccUPD (2).pptx.oasfasfccccccccccccccccccccccccccccccccccccccc
UPD (2).pptx.oasfasfcccccccccccccccccccccccccccccccccccccccBrankouljak
 
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...IT Showoff
 
Sistemskog i mreznog administratora .docx
Sistemskog i mreznog administratora .docxSistemskog i mreznog administratora .docx
Sistemskog i mreznog administratora .docxstevadobrota
 
WebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeWebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeMatija Šmalcelj
 
Основни појмови рачунарске графике
Основни појмови рачунарске графикеОсновни појмови рачунарске графике
Основни појмови рачунарске графикеVeb Alati
 
[ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora [ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora Stipe Predanic
 
Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01Leonardo Miljko
 
Cnc proces ima_pet_osnovnih_koraka
Cnc proces ima_pet_osnovnih_korakaCnc proces ima_pet_osnovnih_koraka
Cnc proces ima_pet_osnovnih_korakaNenad Pejic
 
Coolinarika - Case Study - Net Konferenca 2007
Coolinarika - Case Study - Net Konferenca 2007Coolinarika - Case Study - Net Konferenca 2007
Coolinarika - Case Study - Net Konferenca 2007webburza
 
Seminarski rad za sistemskog i mreznog administratora
Seminarski rad za sistemskog i mreznog administratoraSeminarski rad za sistemskog i mreznog administratora
Seminarski rad za sistemskog i mreznog administratorastevadobrota
 
Kako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudKako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudDubravko Marak
 
Analiza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u CloudAnaliza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u CloudTomislav Lulic
 
Poslovanje radionice za popravak vozila analiza poslovnog sustava -aps-
Poslovanje radionice za popravak vozila analiza poslovnog sustava -aps-Poslovanje radionice za popravak vozila analiza poslovnog sustava -aps-
Poslovanje radionice za popravak vozila analiza poslovnog sustava -aps-micamic
 

Semelhante a Asc photomath-2016 169 (20)

[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016 [ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
 
Angular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayAngular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump Day
 
Bitrix24 pptx
Bitrix24 pptxBitrix24 pptx
Bitrix24 pptx
 
UPD (2).pptx.oasfasfccccccccccccccccccccccccccccccccccccccc
UPD (2).pptx.oasfasfcccccccccccccccccccccccccccccccccccccccUPD (2).pptx.oasfasfccccccccccccccccccccccccccccccccccccccc
UPD (2).pptx.oasfasfccccccccccccccccccccccccccccccccccccccc
 
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...
 
Sistemskog i mreznog administratora .docx
Sistemskog i mreznog administratora .docxSistemskog i mreznog administratora .docx
Sistemskog i mreznog administratora .docx
 
Wise mapping
Wise mappingWise mapping
Wise mapping
 
WebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeWebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacije
 
Основни појмови рачунарске графике
Основни појмови рачунарске графикеОсновни појмови рачунарске графике
Основни појмови рачунарске графике
 
Oblikovni obrasci
Oblikovni obrasciOblikovni obrasci
Oblikovni obrasci
 
[ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora [ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora
 
Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01
 
Cnc proces ima_pet_osnovnih_koraka
Cnc proces ima_pet_osnovnih_korakaCnc proces ima_pet_osnovnih_koraka
Cnc proces ima_pet_osnovnih_koraka
 
Coolinarika - Case Study - Net Konferenca 2007
Coolinarika - Case Study - Net Konferenca 2007Coolinarika - Case Study - Net Konferenca 2007
Coolinarika - Case Study - Net Konferenca 2007
 
Seminarski rad za sistemskog i mreznog administratora
Seminarski rad za sistemskog i mreznog administratoraSeminarski rad za sistemskog i mreznog administratora
Seminarski rad za sistemskog i mreznog administratora
 
Kako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudKako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloud
 
Analiza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u CloudAnaliza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u Cloud
 
Vrste radnih mjesta
Vrste radnih mjestaVrste radnih mjesta
Vrste radnih mjesta
 
Poslovanje radionice za popravak vozila analiza poslovnog sustava -aps-
Poslovanje radionice za popravak vozila analiza poslovnog sustava -aps-Poslovanje radionice za popravak vozila analiza poslovnog sustava -aps-
Poslovanje radionice za popravak vozila analiza poslovnog sustava -aps-
 
JavaCro'14 - Is there a single “correct” web architecture for business apps –...
JavaCro'14 - Is there a single “correct” web architecture for business apps –...JavaCro'14 - Is there a single “correct” web architecture for business apps –...
JavaCro'14 - Is there a single “correct” web architecture for business apps –...
 

Asc photomath-2016 169