Decompression performance

November 28, 2023 ยท View on GitHub

In order to measure the decompression performance, the acl_decompressor tool is used to extract the relevant metrics and a python script is used to parse them.

Here are the clips we measure on:

Note that the data is not yet conveniently packaged.

Here are the platforms we measure on:

  • Desktop: Ryzen 2950X @ 3.5 GHz
  • Phone: Android Pixel 3 @ 2.5 GHz (for v2.0 and earlier)
  • Phone: Android Pixel 7 @ 2.85 GHz (for v2.1 and later)
  • Tablet: iPad Pro 10.5 inch @ 2.39 GHz

We only show a few compilers and architectures to keep the graphs readable.

Unless otherwise specified, the results are from release 2.1.0

Uniformly sampled algorithm

The uniformly sampled algorithm offers consistent performance regardless of the playback direction. Shown here is the median performance of decompress_pose with a cold CPU cache for 3 clips with forward, backward, and random playback on the iPad.

Clip NameForwardBackwardRandom
104_300.910 us0.961 us0.960 us
Trooper_12.304 us2.137 us2.354 us
Trooper_Main28.837 us29.782 us29.918 us

As can be seen, the performance is consistent regardless of the playback direction. It also remains consistent regardless of the clip sample rate and the clip playback rate.

decompress_pose

This function decompresses a whole pose in one go. Shown here is forward playback with a cold CPU cache.

Uniform decompress_pose CMU Performance Uniform decompress_pose Matinee Performance

Here is the delta with the previous version:

Uniform decompress_pose CMU Speed Delta

Uniform decompress_pose Matinee Speed Delta

decompress_bone

This function decompresses a single bone. To generate the graphs, we measure the cost of decompressing a whole pose one bone at a time. Shown here is forward playback with a cold CPU cache.

Uniform decompress_bone CMU Performance

Uniform decompress_bone Matinee Performance

Here is the delta with the previous version:

Uniform decompress_bone CMU Speed Delta

Uniform decompress_bone Matinee Speed Delta