Benchmarks
❯ pfun-cma-model benchmark --repeats 500 --warmup 10
╔══════════════════════════════════════════════════════════════════════════════╗
║ PFun CMA Engine — Python vs. C Extension Benchmark ║
╚══════════════════════════════════════════════════════════════════════════════╝
Library: /home/robbiec/Git/pfun-cma-engine-c/pfun_cma_engine/libpfun_cma_engine.so
Repeats: 500 per configuration (median reported)
Warmup: 10 runs excluded from timing
Sizes: [256, 512, 1024, 2048, 4096, 8192, 16384, 32768]
Params: {'d': 0.0, 'taup': 1.0, 'taug': 1.0, 'B': 0.05, 'Cm': 0.0, 'toff': 0.0}
Testing: python, c
──────────────────────────────────────────────────────────────────────────────
N= 256 │ Python 1.27 ms │ C 93.7 µs │ 13.5× │ Δmax=2.22e-16 ✓
N= 512 │ Python 1.39 ms │ C 167.0 µs │ 8.3× │ Δmax=1.11e-16 ✓
N= 1,024 │ Python 1.57 ms │ C 313.8 µs │ 5.0× │ Δmax=1.11e-16 ✓
N= 2,048 │ Python 1.92 ms │ C 605.7 µs │ 3.2× │ Δmax=2.22e-16 ✓
N= 4,096 │ Python 2.57 ms │ C 1.20 ms │ 2.1× │ Δmax=2.22e-16 ✓
N= 8,192 │ Python 3.84 ms │ C 2.36 ms │ 1.6× │ Δmax=3.33e-16 ✓
N=16,384 │ Python 6.52 ms │ C 4.70 ms │ 1.4× │ Δmax=2.22e-16 ✓
N=32,768 │ Python 12.39 ms │ C 9.85 ms │ 1.3× │ Δmax=2.22e-16 ✓
──────────────────────────────────────────────────────────────────────────────
Summary Table
┌──────────┬──────────────┬──────────────┬──────────┬─────────────┐
│ N │ Python │ C Extension │ Speedup │ Max |Δ| │
├──────────┼──────────────┼──────────────┼──────────┼─────────────┤
│ 256 │ 1.27 ms │ 93.7 µs │ 13.5× │ 2.22e-16 │
│ 512 │ 1.39 ms │ 167.0 µs │ 8.3× │ 1.11e-16 │
│ 1,024 │ 1.57 ms │ 313.8 µs │ 5.0× │ 1.11e-16 │
│ 2,048 │ 1.92 ms │ 605.7 µs │ 3.2× │ 2.22e-16 │
│ 4,096 │ 2.57 ms │ 1.20 ms │ 2.1× │ 2.22e-16 │
│ 8,192 │ 3.84 ms │ 2.36 ms │ 1.6× │ 3.33e-16 │
│ 16,384 │ 6.52 ms │ 4.70 ms │ 1.4× │ 2.22e-16 │
│ 32,768 │ 12.39 ms │ 9.85 ms │ 1.3× │ 2.22e-16 │
└──────────┴──────────────┴──────────────┴──────────┴─────────────┘
Average speedup: 4.6×
Peak speedup: 13.5× (N=256)
Total Python: 31.47 ms
Total C: 19.29 ms
Correctness: ALL PASSED ✓