Oodle Android ARM APK Performance Report 4

September 02 2016

Test of replacing deflate compression on the files contained within the APKs.

This is a simulation of replacing the ZLib (deflate) compression used inside the APK package. To perform this simulation, the APKs were extracted, restricted to only files which had compression applied in the APK (excluding files that were stored uncompressed). A representative subset of those files was semi-randomly selected. They were then decompressed individual on Android ARM devices.

This simulates the scenario in which Android loads files from an installed APK to start the app or to access compressed files at runtime.


The compressors and benchmarking procedure are the same as in the Oodle ARM Report ; see there for details.

For this test a semi-random subset of the deflate-compressed files within APK's was chosen. The test set is :

   com.android.chrome.2272096.apk.dir_lib_armeabi-v7a_libchrome.so               32,344,764
   com.android.chrome.52357078.apk.dir_META-INF_CERT.SF                             174,478
   com.android.chrome.52357078.apk.dir_META-INF_MANIFEST.MF                         174,433
   com.android.chrome.52357078.apk.dir_classes.dex                                4,910,412
   com.asus.ime.601501412.apk.dir_lib_armeabi-v7a_libjni_xt9input.so              7,023,404
   com.ebay.mobile.72.apk.dir_classes.dex                                         9,069,764
   com.facebook.katana.10743010.apk.dir_classes.dex                               1,882,068
   com.facebook.katana.10743014.apk.dir_lib_armeabi-v7a_libfb_creativeediting.so    111,980
   com.facebook.katana.10743014.apk.dir_lib_armeabi-v7a_libfb_jpegturbo.so          161,084
   com.facebook.katana.10743014.apk.dir_lib_armeabi-v7a_libfb_libyuv.so             128,404
   com.facebook.katana.10743014.apk.dir_lib_armeabi-v7a_libgraphqlparser.so         566,092
   com.facebook.katana.10743014.apk.dir_lib_armeabi-v7a_libliger.so               2,752,860
   com.facebook.katana.10743014.apk.dir_lib_armeabi-v7a_libwebp.so                  128,340
   com.facebook.orca.10395319.apk.dir_classes.dex                                   975,912
   com.facebook.orca.10395319.apk.dir_classes2.dex                                8,315,244
   com.facebook.orca.10395319.apk.dir_classes3.dex                                7,756,076
   com.facebook.orca.10395319.apk.dir_classes4.dex                                3,372,020
   com.facebook.orca.10921474.apk.dir_resources.arsc                              9,701,420
   com.google.android.apps.maps.909010124.apk.dir_classes.dex                    13,596,964
   com.google.android.apps.maps.909010124.apk.dir_classes2.dex                    3,365,176
   com.google.android.videos.37201.apk.dir_resources.arsc                         2,875,092
   com.google.android.youtube.101855132.apk.dir_classes.dex                       7,579,552
   com.king.candycrushsaga.1052200.apk.dir_lib_armeabi-v7a_libcandycrushsaga.so  11,094,580
The total sizes by extension is :
dex   : 60,823,188
so    : 54,311,508
asrc  : 12,576,512
sf+mf :    348,911
This distribution was chosen to roughly match the proportion that file type makes up the full set of files, as seen in oodle_apk_report2.html


The charts here show time and size, so lower is better. The totals are made by summing decode time and compressed size. Each page shows total performance on that device, as well as performance per file.

Example results (ARM Cortex-A57 32 bit) :

After the charts on each device page is a list of the ratio and speed for each file, as well as the total performance, like this :

total                : kraken     : 2.962 to 1 : 213.999 MB/s
total                : kraken444  : 2.801 to 1 : 243.956 MB/s
total                : mermaid    : 2.526 to 1 : 514.170 MB/s
total                : selkie     : 2.207 to 1 : 884.397 MB/s
total                : zlib9      : 2.335 to 1 : 106.397 MB/s
total                : brotli9    : 2.672 to 1 : 80.944 MB/s
total                : brotli11   : 2.954 to 1 : 66.936 MB/s


Android ARM 32-bit :

google_apkdeflatedfiles_arm32_QcomKryo.html

google_apkdeflatedfiles_arm32_HelioX25.html

google_apkdeflatedfiles_arm32_CortexA9.html

google_apkdeflatedfiles_arm32_CortexA15.html

google_apkdeflatedfiles_arm32_CortexA57.html


Android ARM 64-bit :

google_apkdeflatedfiles_arm64_QcomKryo.html

google_apkdeflatedfiles_arm64_HelioX25.html


See also the previous report of Windows performance on all the deflate-compressed files within the APK set : oodle_apk_report2.html