google/synthmark

Add explanation of benchmarks

Closed this issue · 2 comments

Please add the following, or something similar, taken from ag/7201451/2..3

---- cut here ---

Explanation of benchmarks:

The voicemark.90 is a measure of how much computation the device is
capable of when running at 90% of its maximum CPU load.

A “voice” is a unit of computation based on a two oscillator
subtractive synthesizer that is common in plugins and sound formats
such as Downloadable Sounds (DLS) and Sound Font (SF2). It is roughly
equivalent to a “Mini Moog” synthesizer.

The number of voices was chosen because that is enough polyphony for
a decent keyboard app with voices that release slowly. It allows for
poly-timbral apps that combines multiple types of sound, such as drums
and pads. Note that many phones can play > 200 voices so this number
should be easily achieved.

The latencymark.fixed.little value gives us the minimum latency of the
top level buffer closest to the app for a constant workload. The DSP
and other lower level components might add 4-6 msec of latency when
using EXCLUSIVE MMAP mode in AAudio. This would give us a total output
latency of around 20 msec.

The latencymark.dynamic.little measures latency for a changing workload,
which is common in interactive applications. Higher latency is required
because the scheduler may not increase the clock rate rapidly enough to
meet the changing demand.

(Note that the latency values are for the top level of a virtual audio
device with 2 msec buffers. So SynthMark can achieve lower latency values
than the actual audio framework with multiple levels and a DSP.)

See also #13 and go/synthmark