Upload
jurica-cerovec
View
232
Download
1
Embed Size (px)
Citation preview
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
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)
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
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!
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.
photomath.net/jobs microblink.com/jobs