cberner / raptorq

Rust implementation of RaptorQ (RFC6330)
Apache License 2.0
264 stars 47 forks source link

Fountain code which is an order of magnitude faster than RaptorQ. #142

Closed fadedbee closed 1 year ago

fadedbee commented 1 year ago

I was looking at your RaptorQ implementation to evaluate the speed of an original fountain code which I have developed. (It's mathematically original, not based on RS, LT or tornado codes.)

On encoding (with a small number of symbols) I see an order of magnitude better performance.

fadedbee commented 1 year ago

On my 2500K i5:

     Running benches/encode_benchmark.rs (target/release/deps/encode_benchmark-11ec8998e3d558b6)
Symbol size: 1280 bytes (without pre-built plan)
symbol count = 10, encoded 127 MB in 0.807secs, throughput: 1268.8Mbit/s
symbol count = 100, encoded 127 MB in 0.645secs, throughput: 1586.7Mbit/s
symbol count = 250, encoded 127 MB in 0.659secs, throughput: 1552.3Mbit/s

vs

    Finished release [optimized] target(s) in 0.52s
     Running `target/release/fountain`
992.984852ms to encode 1250MB (10Gbit)
cberner commented 1 year ago

I've heard that there are optimizations to make RaptorQ ~5x faster. However, they are proprietary and I don't know what they are, so I haven't been able to implement them.

I'm no longer working on fountain codes, but sure when you finish it feel free to post the results here. I'd be interested

cberner commented 1 year ago

Closing for now, but feel free to re-open when you have results.