NDK vs Java : Raster Operation

raster

Raster Operationの演算部分をNDKとJavaで比較。
以下のようにNDKとJavaのraster関数の処理時間を計測し、100回平均している。

NDK

start = System.nanoTime();
raster(pixels, maskpixels, width, height, 1);// NDK Raster
stop = System.nanoTime();

Java

start = System.nanoTime();
rasterJ(pixels, maskpixels, width, height, 1);// Java Raster
stop = System.nanoTime();
  • ICONIA A500

  • 1回目 NDK:2,133us, Java:14,138us 約7倍性能差

  • 2回目 NDK:2,114us, Java:4,727us 約2倍性能差

  • Galaxy SII

  • 1回目 NDK:2,111us, Java:18,956us 約9倍性能差

  • 2回目 NDK:2,251us, Java:7,742us 約3.5倍性能差

Javaは連続して実行すると、JIT効果で実行時間が1/3程度になっているようす。