has anyone benchmarked qoa to see roughly how many instructions per sample it needs? all i see here is that it's more than adpcm and less than mp3, but those differ by orders of magnitude<p>like, can you reasonably qoa-compress real-time 16ksps audio on a 16 megahertz atmega328?<p>hmm, <a href="https://phoboslab.org/log/2023/04/qoa-specification" rel="nofollow noreferrer">https://phoboslab.org/log/2023/04/qoa-specification</a> has some benchmark results, let's see... seems like he encoded 9807 seconds of 44.1ksps stereo in 25.8 seconds and decoded it in 3.00 seconds on an i7-6700k running singlethreaded. what does that imply for other machines?<p>it seems to be integer code (because reproducibility between the predictor in encoding and decoding is important, and a significant part of it is 16-bit. <a href="https://ark.intel.com/content/www/xl/es/ark/products/88195/intel-core-i76700k-processor-8m-cache-up-to-4-20-ghz.html?ui=BIG" rel="nofollow noreferrer">https://ark.intel.com/content/www/xl/es/ark/products/88195/i...</a> says it's a 4.2 gigahertz skylake. agner says skylake can do 4–6 ipc (well, μops/cycle) <a href="https://www.agner.org/optimize/blog/read.php?i=628" rel="nofollow noreferrer">https://www.agner.org/optimize/blog/read.php?i=628</a>, coincidentally testing on an i7-6700k himself, but let's assume it's 3 ipc, because it's usually hard to reach even that level of ilp in useful code<p>so that's about 380 μops per sample if i'm doing my math right; that might be on the order of 400 32-bit <i>integer</i> instructions per sample on an in-order processor. if (handwaving wildly now!) that's 600 8-bit instructions, the atmega328 should be able to encode somewhere in the range of 16–32 kilosamples per second<p>so, quite plausibly<p>for decoding the same math gives 43 μops per sample rather than 380<p>i'm very interested to hear anyone else's benchmarks or calculations