GF(256) / Lin-Chung-Han additive FFT

Reed-Solomon backend benchmarks

Systematic RS(256, K) encode and maximum-erasure decode throughput, comparing the owned LCH implementation with five external reference paths.

118 Benchmark rows
11,800 Raw samples
100 Repetitions per row
1 KiB Bytes per shard
Two-panel RS throughput chart. Encode compares LCH+AVX2, LCH+GFNI, XDRS, ISA-L, Jerasure, and klauspost. DecodeMax includes those series plus native Leopard for K at least 128. Full numerical medians follow in accessible tables.
Median CPU-time-derived input throughput on the pinned local test host. Higher is better. The y-axis is logarithmic and throughput is measured in GiB/s. On narrow screens, scroll the chart horizontally or use the complete tables below.

Measurement contract

Six series receive the same nine full-length K/R cases and deterministic maximum-erasure workload: two owned LCH backends plus XDRS, ISA-L, Jerasure, and klauspost. Native Leopard receives its five valid high-rate cases. External setup differences are made explicit rather than hidden behind a synthetic common API.

Code shape

K = 8, 16, 32, 64, 128, 192, 224, 240, and 248. Recovery count is R = 256 - K. Native Leopard is shown only where R is not greater than K.

DecodeMax

Exactly R symbols are shuffled across data and recovery positions. Timed throughput uses the paper-compatible K x bytes input metric, not recovered-output volume.

Run discipline

CPU0 pinned, 1 second warmup, at least 0.2 seconds per repetition, and randomized ten-repetition C++/Go chunks. The current harness verifies every row outside timing. This long run predates the native XDRS encode check; all nine XDRS encode configurations were subsequently output-verified under the final harness.

Representative medians

Selected points from the complete dataset, in GiB/s. The graph above contains every measured K value.

Backend Encode K128 Encode K248 Decode K128 Decode K248
LCH+GFNI8.0925.872.7913.96
LCH+AVX26.8423.202.5513.08
XDRS5.9819.432.458.56
Leopard6.2420.122.444.66
ISA-L1.2516.360.0720.027
Jerasure0.1512.500.0500.204
klauspost0.4947.860.0690.185
Complete median data for every plotted point

Encode input throughput (GiB/s)

BackendK8K16K32K64K128K192K224K240K248
LCH+GFNI0.7751.4212.1664.4478.09313.65615.14922.45825.874
LCH+AVX20.6861.1681.8863.6616.84411.44613.71718.63423.198
XDRS0.6611.0841.7543.2695.9799.50711.36115.16519.434
Leopardnot runnot runnot runnot run6.24010.05311.85915.95420.118
ISA-L0.7790.8280.8751.0141.2522.3014.4938.99216.356
Jerasure0.08530.07580.08720.1020.1510.2920.6011.2392.501
klauspost0.2580.2640.2830.3280.4940.9751.9573.8887.861

DecodeMax input throughput (GiB/s)

BackendK8K16K32K64K128K192K224K240K248
LCH+GFNI0.4050.8491.1262.2142.7924.5356.2009.56713.958
LCH+AVX20.3560.6561.0111.7332.5524.1865.6498.63413.079
XDRS0.3710.6391.0121.6902.4533.9215.1226.9258.558
Leopardnot runnot runnot runnot run2.4413.4143.9404.3644.655
ISA-L6.9272.6100.7880.2300.07180.03840.03120.02840.0271
Jerasure1.7590.6250.2550.09420.05030.04070.06610.1100.204
klauspost0.7450.6560.3490.1370.06930.05330.07770.1200.185

This WSL/AMD run remains environmentally noisy: CPU-time coefficient of variation ranges from 7.2% to 41.3%. Treat medians as local comparative evidence, not universal hardware rankings. Native XDRS, ISA-L, Jerasure, and klauspost use their own standard-coordinate code families; Leopard uses the compatible Cantor representation.