ANdroid
A few Benchmarks
Alberto Mancini - Francesca Tosi
15 Aprile 2014
HTML5Dev
alberto@jooink.com
http://github.com/jooink
http://www.jooink.com
http://jooink.blogspot.com
Itjustwasn'tready
Si riferiva a FB su mobile che era web based e stava facendo la prima intervista
“After the company’s co...
fastbook
http://www.sencha.com/blog/the-making-of-fastbook-an-html5-love-story
fastbook, Sencha’s fb demo client
"... is r...
(*)WebApps ● cached
● offline capable
● mobile-webapp-capable
● Homescreen-installed
● hosted app
● packaged app
https://d...
GWT/MGWT Java to Javascript compiler
Emulated JRE
Widgets
Deferred Binding
Multiple Browsers
Compiled Resources
...
xché
una codebase e
tante 'incarnazioni'
dell'applicazione.
MarkerBasedAR
http://code.google.com/p/gwt-webgl/
http://code.google.com/p/gwt-nyartoolkit/
http://picshare.jooink.com
c.a...
GWT-Boofcv GWT-Boofcv sample at:
http://goo.gl/3IJQgs
GWT-Boofcv GWT-Boofcv sample at:
http://goo.gl/3IJQgs
strategy
● native ?
● hybrid ?
● browser-based ?
Native,NDK
capire quanto possiamo guadagnare in
termini di performance basandoci su
differenti tecnologie
Applicazione
And...
Benchmarks
il medesimo algoritmo implementato con tecnologie
diverse eseguito sul medesimo dispositivo
Benchmark
In entrambe le applicazioni precedenti una
operazione semplice ma computazionalmente costosa
è fare la conversio...
Rules RGB
jbyte[1024*1024*3]
Average on 1000 runs
gray
jbyte[1024*1024]
1
0.299*R+0.587*G+0.114*B → Y
2
3
Testdevice Galaxy Tab3
Intel Atom CPU Z2560
2 core - 1.60 GHz
Android 4.4.2
Architettura i686
Competitors Benchmarks on:
Java <byte>
NDK <jbyte>
IPP <Ipp8u>
Competitors Benchmarks on:
Java <byte>
NDK <jbyte>
IPP <Ipp8u>
Intel Integrated Performance Primitives
Competitors Benchmarks on:
Java <byte>
NDK <jbyte>
IPP <Ipp8u>
Chrome <Uint8Array>
Firefox <Uint8Array>
Aurora <Uint8Array>
Codice(Java) Java:
void compute(byte[] in, byte[] out) {
for(int i=0, j=0; i< out.length; i++, j+=3)
out[i] =
(byte)(0.299...
Details(NDK)
https://developer.android.com/tools/sdk/ndk/index.html
La documentazione non e’ il punto di forza dell’
NDK
h...
Codice(C,jni)
void JNICALL … jbyteArray in, jbyteArray out) {
jsize len_out = (*env)->GetArrayLength(env, out);
...
jbyte ...
Details(IPP) Bundled in BeaconMountain beh … la ‘preview’
http://software.intel.com/en-us/intel-ipp
… ed avete la IPP per ...
Codice(IPP)
… jni ...
IppiSize srcRoi = { 1024, 1024 };
Ipp8u* pSrc = body_in;
Ipp8u* pDst = body_out;
ippiRGBToGray_8u_C3...
Resultsnative
Resultsnative
min
max
avg
Codice(js)
var len_out = outb.length;
var i,j;
for(i=0, j=0; i< len_out; i++, j+=3)
outb[i] = (0.299 * inb[j] + 0.587 * in...
Resultsjs
min
max
avg
Grazie Francesca Tosi
francesca@jooink.com
Alberto Mancini
alberto@jooink.com
Github: github.com/jooink/
www.jooink.com
jo...
Details(HAXM) Bundled in BeaconMountain
http://software.intel.com/en-us/android/articles/intel-hardware-
accelerated-execu...
Alberto Mancini - A few benchmark on Android
Upcoming SlideShare
Loading in …5
×

Alberto Mancini - A few benchmark on Android

293
-1

Published on

Alberto Mancini - A few benchmark on Android

15 Aprile 2014 - ANdroid conference Ancona - GDG Ancona

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
293
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Alberto Mancini - A few benchmark on Android

  1. 1. ANdroid A few Benchmarks Alberto Mancini - Francesca Tosi 15 Aprile 2014
  2. 2. HTML5Dev alberto@jooink.com http://github.com/jooink http://www.jooink.com http://jooink.blogspot.com
  3. 3. Itjustwasn'tready Si riferiva a FB su mobile che era web based e stava facendo la prima intervista “After the company’s continuous stock price drop” (ndr) http://mashable.com/2012/09/11/mark-zuckerberg-post-ipo-interview/
  4. 4. fastbook http://www.sencha.com/blog/the-making-of-fastbook-an-html5-love-story fastbook, Sencha’s fb demo client "... is really promising, but it is running in the “browser”. When you make an “installable” app, you can only use WebView, which is a second-class and slower browser." It's a technology demo that shows what developers can do with HTML5 if they take the right approach, and use the right frameworks and tools
  5. 5. (*)WebApps ● cached ● offline capable ● mobile-webapp-capable ● Homescreen-installed ● hosted app ● packaged app https://developers.google.com/chrome/apps/ https://developer.mozilla.org/en-US/Apps/Build/installable_apps secondo alcuni sono una liberazione dai marketplace (i.e. Google Play & AppStore) secondo alcuni tra l’altro alcune tecnologie vengono ritardate dai produttori per non perdere il potere che viene dai marketplace
  6. 6. GWT/MGWT Java to Javascript compiler Emulated JRE Widgets Deferred Binding Multiple Browsers Compiled Resources ...
  7. 7. xché una codebase e tante 'incarnazioni' dell'applicazione.
  8. 8. MarkerBasedAR http://code.google.com/p/gwt-webgl/ http://code.google.com/p/gwt-nyartoolkit/ http://picshare.jooink.com c.a. 25 fps
  9. 9. GWT-Boofcv GWT-Boofcv sample at: http://goo.gl/3IJQgs
  10. 10. GWT-Boofcv GWT-Boofcv sample at: http://goo.gl/3IJQgs
  11. 11. strategy ● native ? ● hybrid ? ● browser-based ?
  12. 12. Native,NDK capire quanto possiamo guadagnare in termini di performance basandoci su differenti tecnologie Applicazione Android NDK che usa librerie native Applicazione Android Java per Dalvik
  13. 13. Benchmarks il medesimo algoritmo implementato con tecnologie diverse eseguito sul medesimo dispositivo
  14. 14. Benchmark In entrambe le applicazioni precedenti una operazione semplice ma computazionalmente costosa è fare la conversione in grayscale delle immagini
  15. 15. Rules RGB jbyte[1024*1024*3] Average on 1000 runs gray jbyte[1024*1024] 1 0.299*R+0.587*G+0.114*B → Y 2 3
  16. 16. Testdevice Galaxy Tab3 Intel Atom CPU Z2560 2 core - 1.60 GHz Android 4.4.2 Architettura i686
  17. 17. Competitors Benchmarks on: Java <byte> NDK <jbyte> IPP <Ipp8u>
  18. 18. Competitors Benchmarks on: Java <byte> NDK <jbyte> IPP <Ipp8u> Intel Integrated Performance Primitives
  19. 19. Competitors Benchmarks on: Java <byte> NDK <jbyte> IPP <Ipp8u> Chrome <Uint8Array> Firefox <Uint8Array> Aurora <Uint8Array>
  20. 20. Codice(Java) Java: void compute(byte[] in, byte[] out) { for(int i=0, j=0; i< out.length; i++, j+=3) out[i] = (byte)(0.299 * in[j] + 0.587 * in[j+1] + 0.114 * in[j+2]); } Using FP arithmetics !! We cannot (at least without asm.js) coherce numbers to integers in js so we chosen not to optimize here.
  21. 21. Details(NDK) https://developer.android.com/tools/sdk/ndk/index.html La documentazione non e’ il punto di forza dell’ NDK https://github.com/jooink/ndk-cpuid ● start the (intel) avd ● enter in the jni folder & execute 'ndk-build' ● from the CPUIDApp root dir execute 'ant debug' ● adb install -r bin/CPUIdApp-debug.apk
  22. 22. Codice(C,jni) void JNICALL … jbyteArray in, jbyteArray out) { jsize len_out = (*env)->GetArrayLength(env, out); ... jbyte *body_out = (*env)->GetByteArrayElements(env, out, 0); for(i=0, j=0; i< len_out; i++, j+=3) body_out[i] = (jbyte)(0.299 * body_in[j] + … ); (*env)->ReleaseByteArrayElements(env, in, body_in, 0); ... }
  23. 23. Details(IPP) Bundled in BeaconMountain beh … la ‘preview’ http://software.intel.com/en-us/intel-ipp … ed avete la IPP per android x86 !!! Scaricate la versione per linux ( la evaluation, or 199$ :( ) Installatela ( vi serve una macchina linux ) Copiate le librerie (*.a) e gli include (*.h) (32bit statici non-threaded)
  24. 24. Codice(IPP) … jni ... IppiSize srcRoi = { 1024, 1024 }; Ipp8u* pSrc = body_in; Ipp8u* pDst = body_out; ippiRGBToGray_8u_C3C1R(pSrc ,1024, pDst, 1024, srcRoi); … jni ...
  25. 25. Resultsnative
  26. 26. Resultsnative min max avg
  27. 27. Codice(js) var len_out = outb.length; var i,j; for(i=0, j=0; i< len_out; i++, j+=3) outb[i] = (0.299 * inb[j] + 0.587 * inb[j+1] + 0.114 *inb[j+2]); var buffer_in = new ArrayBuffer(size*3); var buffer_out = new ArrayBuffer(size); var inb = new Uint8Array(buffer_in); var out = new Uint8Array(buffer_out);
  28. 28. Resultsjs min max avg
  29. 29. Grazie Francesca Tosi francesca@jooink.com Alberto Mancini alberto@jooink.com Github: github.com/jooink/ www.jooink.com jooink.blogspot.com
  30. 30. Details(HAXM) Bundled in BeaconMountain http://software.intel.com/en-us/android/articles/intel-hardware- accelerated-execution-manager cambia la vita con le immagini x86 Attenzione pianta OSX, maverick installare lo hotfix

×