3. 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
11. Photomath iOS
(Objective C)
Photomath Android
(Java)
Core components (C++)
OCR, image processing, math solver
O
bjective
C++
Java
N
ative
Interface
(JN
I)
12. 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!
13. 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.
14. 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
16. 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!
17.
18.
19. 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!
21. Mjerenje performansi
- Prije optimizacija, obavezno je mjerenje
- Subjektivno mjerenje - najvažnije!
- Profiliranje
- Timeri i specijalizirani alati (Traceview, Instruments)
22.
23. 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