Skip to content

ACL Pack vs OpenCV: 4.72× Aggregate, Up to 78× Faster ARM64 Image Processing

If you are building computer vision on ARM64 — whether on Android, an embedded board, or ARM Linux — you have probably asked the same question: why is OpenCV so heavy, and can I go faster?

ACL Pack is a zero-dependency, C++17 image-processing library optimized for ARM64 NEON. It ships as a static library with 113 operator families (163 callable entries) and is designed to be a lightweight, fast alternative to OpenCV on mobile and edge devices.

What we measured

We ran the same operators on four ARM64 devices across seven image sizes, from 640×480 up to 4096×3072. Every test used the same input data and the same parameters for both libraries.

DeviceSoCOS
Dimensity 9400MediaTek Dimensity 9400Android
Dimensity 9500MediaTek Dimensity 9500Android
Snapdragon 8 Gen 2Qualcomm Snapdragon 8 Gen 2Android
Snapdragon 8 Gen 3Qualcomm Snapdragon 8 Gen 3Android

Highlights

  • 72.3% of operator samples are faster than OpenCV on ARM64 (n=6864, NEON path across all 7 size tiers × 4 devices).
  • Peak speedups: up to ~78× (resize_nn_up4x_1ch), inRange_1ch 76.42×, resize_area_up4x_1ch 49.51×, bgr2Lab 12.86×.
  • M-tier (1920×1280) aggregate speedup: 4.56×; full-matrix aggregate: 4.72× over OpenCV 4.13.0.
  • Library size: ACL Pack static library is ~6 MB (paid tiers 6.2–7.5 MB); OpenCV runtime is 15–50 MB.

Sample benchmark

Peak per-operator speedups at the M tier (1920×1280) across the four-device cohort:

OperatorDeviceSpeedup
resize_nn_up4x_1chSnapdragon 8 Gen 378.22×
inRange_1chSnapdragon 8 Gen 276.42×
bgr2LabSnapdragon 8 Gen 312.86×

Full numbers are in the performance whitepaper.

Why it is faster

  1. NEON hand-vectorization for the hot paths instead of generic C++ loops.
  2. No runtime dependencies — just a static .a and a single header surface.
  3. Operator-specific tuning — kernel shape, memory layout, and border handling are chosen per operator rather than forced through a generic abstraction.

When to use ACL Pack

  • Android NDK apps where APK size matters.
  • ARM Linux edge devices with limited storage.
  • Preprocessing pipelines for on-device AI inference.

Try it

Download the trial build from the v1.0.3 release or read the full documentation.


Star the repo on GitHub and follow the Changelog for updates.