Performance & benchmarks

PedalKernel circuits are designed for real-time performance. This page shows indicative CPU usage and scaling behavior.

Numbers should be read as order-of-magnitude, not promises. They depend on the host CPU, compile flags, sample rate, and how the circuit is cascaded. Run cargo bench --bench wdf_bench on your machine for the authoritative measurement.

Pedal benchmarks

Measurements on an Apple M-series chip at 48 kHz, with default compile options (no oversampling, ideal tolerance):

PedalCPU BudgetSamples/secRealtime ×
Fuzz Face0.04%122M2500×
ProCo RAT0.3%16M330×
Dyna Comp0.4%12M252×
Boss CE-2 (BBD)0.5%9.9M207×
Tube Screamer1.2%3.8M80×
Klon Centaur1.4%3.5M72×
Big Muff1.7%2.8M59×
Blues Driver5.9%818K17×

CPU Budget = fraction of the real-time budget consumed. Under 100% means glitch-free audio.

Pedals not shown in the table (SD1, Fulltone OCD, Boss DM-2, Memory Man, Phase 90, and the tube amps and synth modules) have not been benchmarked in this pass but fall within the same envelope.

FLOPS breakdown

WDF processing cost per sample depends on circuit complexity:

ElementEst. FLOPs
Series adaptor9
Parallel adaptor10
Capacitor2
Diode Newton solve220 (55 × 4 iterations)
Typical clipper stage~250 total

A Tube Screamer (1 clipping stage) needs ~12 MFLOPS at 48 kHz. A Big Muff (4 cascaded stages) needs ~48 MFLOPS.

BBD depth

The BBD model (Boss CE-2) includes full analog bucket-brigade emulation:

Despite this, BBD overhead is modest (~0.5% CPU) because most operations are simple one-pole filters.

Scalability

Cascaded WDF stages scale linearly:

Stagesns/sampleCPU @ 48kHz
11730.8%
22681.3%
45922.8%
812496.0%

Sample rate scaling

The Tube Screamer at various sample rates:

Sample RateRealtime ×
44.1 kHz90×
48 kHz82×
96 kHz42×
192 kHz21×

Running benchmarks

Run the full benchmark suite yourself:

cargo bench --bench wdf_bench

This gives you precise CPU timing on your machine, sample rates, and pedals of your choice.