Perfectly Clear SDK Speed Performance

This FAQ will explain the main factors that affect the performance of Perfectly Clear SDK.  This benchmarking was done with our v8 SDK in July, 2019.

Perfectly Clear SDK Performance Data

 Processing speed is highly dependent on 3 factors:

  1. Image size. Processing time is roughly linear with regards to image size for images over about 3 megapixels: a 10 megapixel image takes roughly half the time as a 20 megapixel image.
  2. Correction parameters used, and image content. Many of the Perfectly Clear corrections are image-content aware. For example, our noise correction will only apply noise correction when both noise correction is enabled and noise is detected in the source image. Thus, turning on the noise correction tool isn’t always a performance cost, but when noise is present in the images, the incremental processing time can be significant. This applies to the Beautify corrections, Red-eye removal, Tint correction, and to a lesser degree to many of the individual PfC core corrections.
  3. Computer specifications – the more RAM, cores, and the more powerful your CPU is, the faster your throughout will be.

SDK Performance Results

The SDK data excludes I/O and JPEG compression – as our SDK is typically embedded within applications that are already handing these tasks. Thus, the SDK data is a good indication of the incremental processing required when adding the Perfectly Clear SDK to an existing application or platform.

The actual performance you can expect will depend on the specs of the computer you use, the image size and content, and the corrections applied.  However, the trend should be consistent across these parameters.

Processing time varies with image size, but for images over about 4 megapixels in size, the processing time is quite linear.

Image Correction Parameters

This graph shows how processing time is affected by the various correction parameters.

There are four major components of the Perfectly Clear SDK:
1) Common – which includes necessary “overhead” for all images.
2) Core corrections – include exposure, tint, vibrancy, sharpening, contrast, skin tone, skin bias correction, color fidelity and light diffusion.
3) Beautify includes all the skin and eye enhancements and red-eye removal.
4) Noise Removal

Finishing Tools and Gradient Filters are additional – but are rarely applied in SDK processing.  Additional processing time should be expected if these correction parameters are enabled.

Computer Specifications

In order to perform an easily repeatable test, we have run the following tests on an Amazon EC2 Linux c5d.2xlarge instance.  This uses an Intel Xeon 8124M CPU with 8 cores at 3.0 GHz, 16 GB RAM, and uses high performance SSD’s.  At the time of writing this instance costs roughly $0.25 per hour  (with over 20,000 images per hour, that results in $0.0000188 per image).

It is recommended to have 2GB RAM per CPU core.

Keep Reading