Crates.io | rlnc |
lib.rs | rlnc |
version | 0.8.4 |
created_at | 2025-05-09 16:16:09.557444+00 |
updated_at | 2025-08-22 16:47:19.76112+00 |
description | Random Linear Network Coding |
homepage | |
repository | https://github.com/itzmeanjan/rlnc.git |
max_upload_size | |
id | 1667299 |
size | 7,184,694 |
Blazing Fast Erasure-Coding with Random Linear Network Coding (RLNC)
rlnc
is a Rust library crate that implements an advanced erasure-coding technique Random Linear Network Coding (RLNC) over galois field $GF(2^8)$ with irreducible polynomial $x^8 + x^4 + x^3 + x^2 + 1$. This library provides functionalities for blazing fast erasure-coding of data, reconstructing original data from coded pieces, and recoding existing coded pieces to new erasure-coded pieces, without ever decoding it back to original data, using AVX512, AVX2 and SSSE3 intrinsics on x86_64
and NEON intrinsics on arm64
, for fast vector multiplication by a single scalar over $GF(2^8)$.
Following charts show performance of RLNC encoder, recoder and decoder on AWS EC2 m7a.large
with AMD EPYC 9R14 - which has AVX512 support. More performance benchmark results below.
Let's take a practical example of how RLNC can be useful.
Imagine you want to send a book, split into 10 chapters, to a friend over a very unreliable mail service that often loses envelopes.
The old way is to send each of the 10 chapters in a separate envelope. If even 1 envelope gets lost, your friend can't read the whole book. They have to ask you to send that specific missing chapter again, which is slow and inefficient.
Random Linear Network Coding (RLNC) works like this: instead of sending the original chapters, you create 20 new "summary" envelopes. Each summary envelope is a unique, random mix of sentences from all the original 10 chapters. You then mail these 20 summary envelopes.
The magic is that your friend only needs to receive any 10 of these summary envelopes to perfectly reconstruct the entire book. It doesn't matter if the third one you sent gets lost, as long as another one arrives. Because each envelope contains information from the whole book, any 10 of them provide enough clues to solve the puzzle and rebuild the original 10 chapters.
This makes the transfer incredibly robust and efficient, as you don't need to worry about specific envelopes getting lost, just that enough of them make it to the destination.
RLNC can be used for erasure-coding both data-in-transit and data-in-rest - essentially increasing availability of original data by spreading it into many more pieces s.t. each of them is equally important. For a quick understanding of RLNC, have a look at my blog post @ https://itzmeanjan.in/pages/rlnc-in-depth.html.
Random Linear Network Coding (RLNC) excels in highly dynamic and lossy environments like multicast, peer-to-peer networks, and distributed storage, due to interesting properties such as encoding with random-sampled coefficients, any k
out of n
coded-pieces are sufficient to recover and recoding new pieces with existing erasure-coded pieces. Unlike Reed-Solomon, which requires specific symbols for deterministic recovery, RLNC allows decoding from any set of linearly independent packets. Compared to Fountain Codes, RLNC offers robust algebraic linearity with coding vector overhead, whereas Fountain codes prioritize very low decoding complexity and indefinite symbol generation, often for large-scale broadcasts.
For now this crate implements only Full RLNC scheme.
RLNCError
enum to provide clear error messages for various operational failures.Rust stable toolchain; see https://rustup.rs for installation guide. MSRV for this crate is 1.89.0.
# While developing this library, I was using
$ rustc --version
rustc 1.89.0 (29483883e 2025-08-04)
For ensuring functional correctness of RLNC operations, the library includes a comprehensive test suite. Run all the tests by running following commands.
# Testing on host, first with `default` feature, then with `parallel` feature enabled.
make test
# Testing on web assembly target, using `wasmtime`.
rustup target add wasm32-wasip1
rustup target add wasm32-wasip2
cargo install wasmtime-cli@35.0.0 --locked
make test-wasm
running 17 tests
test full::decoder::tests::test_decoder_decode_invalid_piece_length ... ok
test full::decoder::tests::test_decoder_new_invalid_inputs ... ok
test full::encoder::tests::test_encoder_code_with_buf_invalid_inputs ... ok
test full::decoder_matrix::test::test_swap_rows ... ok
test full::encoder::tests::test_encoder_code_with_coding_vector_invalid_inputs ... ok
test full::encoder::tests::test_encoder_getters ... ok
test full::decoder::tests::test_decoder_getters ... ok
test full::encoder::tests::test_encoder_new_invalid_inputs ... ok
test full::encoder::tests::test_encoder_without_padding_invalid_data ... ok
test full::recoder::tests::test_recoder_getters ... ok
test full::recoder::tests::test_recoder_new_invalid_inputs ... ok
test full::recoder::tests::test_recoder_recode_with_buf_invalid_inputs ... ok
test common::gf256::test::prop_test_gf256_operations ... ok
test full::decoder_matrix::test::prop_test_rref_is_idempotent ... ok
test full::tests::prop_test_rlnc_encoder_decoder ... ok
test full::tests::prop_test_rlnc_decoding_with_useless_pieces ... ok
test full::tests::prop_test_rlnc_encoder_recoder_decoder has been running for over 60 seconds
test full::tests::prop_test_rlnc_encoder_recoder_decoder ... ok
test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 72.24s
Doc-tests rlnc
running 3 tests
test src/common/simd_mul_table.rs - common::simd_mul_table (line 25) ... ignored
test src/common/simd_mul_table.rs - common::simd_mul_table (line 8) ... ignored
test src/lib.rs - (line 58) ... ok
test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s
To generate a detailed code coverage report in HTML format, use cargo-tarpaulin:
# Install cargo-tarpaulin if not already installed
cargo install cargo-tarpaulin
make coverage
Coverage Results:
|| Tested/Total Lines:
|| src/common/errors.rs: 0/1
|| src/common/gf256.rs: 9/11
|| src/common/simd/mod.rs: 6/9
|| src/common/simd/x86/avx2.rs: 10/10
|| src/common/simd/x86/mod.rs: 6/15
|| src/common/simd/x86/ssse3.rs: 0/10
|| src/full/decoder.rs: 25/32
|| src/full/decoder_matrix.rs: 51/58
|| src/full/encoder.rs: 24/27
|| src/full/recoder.rs: 28/36
||
76.08% coverage, 159/209 lines covered
This will create an HTML coverage report at tarpaulin-report.html
that you can open in your web browser to view detailed line-by-line coverage information for all source files.
[!NOTE] There is a help menu, which introduces you to all available commands; just run
$ make
from the root directory of this project.
Performance benchmarks for several input configurations are included to evaluate the efficiency of this RLNC implementation.
To run the benchmarks, execute the following command from the root of the project:
make bench # First with `default` feature, then with `parallel` feature enabled.
[!WARNING] When benchmarking make sure you've disabled CPU frequency scaling, otherwise numbers you see can be misleading. I find https://github.com/google/benchmark/blob/b40db869/docs/reducing_variance.md helpful.
For visualizing benchmark results see plots directory.
Running benchmarks on Linux 6.14.0-27-generic x86_64
, compiled with rustc 1.88.0 (6b00bc388 2025-06-23)
.
Component | Peak Median Throughput (default feature) |
Peak Median Throughput (parallel feature) |
Impact of number of pieces on performance |
---|---|---|---|
Full RLNC Encoder | 30.14 GiB/s | 23.39 GiB/s | The number of pieces original data got split into has a minimal impact on the encoding speed. |
Full RLNC Recoder | 27.26 GiB/s | 12.63 GiB/s | Similar to the encoder, the recoder's performance remains largely consistent regardless of how many pieces the original data is split into. |
Full RLNC Decoder | 1.59 GiB/s | Doesn't yet implement a parallel decoding mode | As the number of pieces increases, the decoding time increases substantially, leading to a considerable drop in throughput. This indicates that decoding is the most computationally intensive part of the full RLNC scheme, and its performance is inversely proportional to the number of pieces. |
In summary, the full RLNC implementation demonstrates excellent encoding and recoding speeds, consistently achieving GiB/s throughputs with minimal sensitivity to the number of data pieces. The parallel
feature, leveraging Rust rayon
data-parallelism framework, also provides good performance for both encoding and recoding. Whether you want to use that feature, completely depends on your usecase. However, decoding remains a much slower operation, with its performance significantly diminishing as the data is split into a greater number of pieces, and currently does not implement a parallel decoding algorithm.
# Encoding with AVX2-powered SIMD vector x scalar multiplication
Timer precision: 22 ns
full_rlnc_encoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ encode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 32.89 ยตs โ 127.4 ยตs โ 40.52 ยตs โ 41.51 ยตs โ 100 โ 100
โ 31.54 GiB/s โ 8.141 GiB/s โ 25.6 GiB/s โ 24.99 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 16 B โ 16 B โ 16 B โ 16 B โ โ
โโ 1.00 MB data split into 32 pieces 41.24 ยตs โ 56.61 ยตs โ 43.1 ยตs โ 43.33 ยตs โ 100 โ 100
โ 24.41 GiB/s โ 17.78 GiB/s โ 23.36 GiB/s โ 23.24 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 32 B โ 32 B โ 32 B โ 32 B โ โ
โโ 1.00 MB data split into 64 pieces 31.63 ยตs โ 43.55 ยตs โ 32.9 ยตs โ 33.61 ยตs โ 100 โ 100
โ 31.36 GiB/s โ 22.77 GiB/s โ 30.14 GiB/s โ 29.51 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 64 B โ 64 B โ 64 B โ 64 B โ โ
โโ 1.00 MB data split into 128 pieces 35.49 ยตs โ 60.33 ยตs โ 36.4 ยตs โ 37.23 ยตs โ 100 โ 100
โ 27.73 GiB/s โ 16.31 GiB/s โ 27.04 GiB/s โ 26.43 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128 B โ 128 B โ 128 B โ 128 B โ โ
โโ 1.00 MB data split into 256 pieces 33.35 ยตs โ 41.93 ยตs โ 36.74 ยตs โ 36.01 ยตs โ 100 โ 100
โ 29.4 GiB/s โ 23.39 GiB/s โ 26.69 GiB/s โ 27.23 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 256 B โ 256 B โ 256 B โ 256 B โ โ
โโ 16.00 MB data split into 16 pieces 1.034 ms โ 2.273 ms โ 1.094 ms โ 1.173 ms โ 100 โ 100
โ 16.04 GiB/s โ 7.301 GiB/s โ 15.17 GiB/s โ 14.14 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 16 B โ 16 B โ 16 B โ 16 B โ โ
โโ 16.00 MB data split into 32 pieces 941.6 ยตs โ 1.658 ms โ 1.009 ms โ 1.027 ms โ 100 โ 100
โ 17.11 GiB/s โ 9.713 GiB/s โ 15.96 GiB/s โ 15.67 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 32 B โ 32 B โ 32 B โ 32 B โ โ
โโ 16.00 MB data split into 64 pieces 965.5 ยตs โ 1.552 ms โ 1.009 ms โ 1.021 ms โ 100 โ 100
โ 16.43 GiB/s โ 10.22 GiB/s โ 15.72 GiB/s โ 15.52 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 64 B โ 64 B โ 64 B โ 64 B โ โ
โโ 16.00 MB data split into 128 pieces 923.9 ยตs โ 1.534 ms โ 940.6 ยตs โ 956.9 ยตs โ 100 โ 100
โ 17.04 GiB/s โ 10.26 GiB/s โ 16.74 GiB/s โ 16.45 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128 B โ 128 B โ 128 B โ 128 B โ โ
โโ 16.00 MB data split into 256 pieces 926 ยตs โ 1.843 ms โ 946.9 ยตs โ 990.5 ยตs โ 100 โ 100
โ 16.93 GiB/s โ 8.507 GiB/s โ 16.56 GiB/s โ 15.83 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 256 B โ 256 B โ 256 B โ 256 B โ โ
โโ 32.00 MB data split into 16 pieces 2.665 ms โ 3.902 ms โ 2.914 ms โ 2.927 ms โ 100 โ 100
โ 12.45 GiB/s โ 8.507 GiB/s โ 11.39 GiB/s โ 11.34 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 16 B โ 16 B โ 16 B โ 16 B โ โ
โโ 32.00 MB data split into 32 pieces 1.934 ms โ 2.755 ms โ 2.049 ms โ 2.076 ms โ 100 โ 100
โ 16.66 GiB/s โ 11.69 GiB/s โ 15.72 GiB/s โ 15.52 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 32 B โ 32 B โ 32 B โ 32 B โ โ
โโ 32.00 MB data split into 64 pieces 1.845 ms โ 2.32 ms โ 1.94 ms โ 1.944 ms โ 100 โ 100
โ 17.19 GiB/s โ 13.67 GiB/s โ 16.35 GiB/s โ 16.31 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 64 B โ 64 B โ 64 B โ 64 B โ โ
โโ 32.00 MB data split into 128 pieces 1.847 ms โ 2.436 ms โ 1.914 ms โ 1.942 ms โ 100 โ 100
โ 17.05 GiB/s โ 12.92 GiB/s โ 16.45 GiB/s โ 16.21 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128 B โ 128 B โ 128 B โ 128 B โ โ
โฐโ 32.00 MB data split into 256 pieces 1.777 ms โ 2.306 ms โ 1.834 ms โ 1.841 ms โ 100 โ 100
17.65 GiB/s โ 13.6 GiB/s โ 17.1 GiB/s โ 17.04 GiB/s โ โ
max alloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2 โ โ
128.5 KiB โ 128.5 KiB โ 128.5 KiB โ 128.5 KiB โ โ
alloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2 โ โ
128.5 KiB โ 128.5 KiB โ 128.5 KiB โ 128.5 KiB โ โ
dealloc: โ โ โ โ โ
1 โ 1 โ 1 โ 1 โ โ
256 B โ 256 B โ 256 B โ 256 B โ โ
# ---------------------------------------------------------------------------------------------------------------------------
# Encoding with `rayon` data-parallelism, also using AVX2 intrinsics for faster vector x scalar multiplication
Timer precision: 23 ns
full_rlnc_encoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ encode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 185.7 ยตs โ 1.688 ms โ 226.5 ยตs โ 277.7 ยตs โ 100 โ 100
โ 5.584 GiB/s โ 629.2 MiB/s โ 4.579 GiB/s โ 3.736 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 2.68 โ โ
โ 32 B โ 32 B โ 32 B โ 607.5 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 3.73 โ โ
โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ 64.6 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3.07 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ grow: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 2.56 B โ โ
โโ 1.00 MB data split into 32 pieces 54.8 ยตs โ 169.4 ยตs โ 93.37 ยตs โ 96.09 ยตs โ 100 โ 100
โ 18.37 GiB/s โ 5.942 GiB/s โ 10.78 GiB/s โ 10.48 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 64 B โ 64 B โ 64 B โ 94.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ 32.09 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ โ
โโ 1.00 MB data split into 64 pieces 54.04 ยตs โ 220.4 ยตs โ 96.38 ยตs โ 102.1 ยตs โ 100 โ 100
โ 18.35 GiB/s โ 4.499 GiB/s โ 10.29 GiB/s โ 9.706 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128 B โ 128 B โ 128 B โ 143.2 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ 16.14 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ โ
โโ 1.00 MB data split into 128 pieces 44.13 ยตs โ 667.3 ยตs โ 103 ยตs โ 107.2 ยตs โ 100 โ 100
โ 22.3 GiB/s โ 1.475 GiB/s โ 9.554 GiB/s โ 9.175 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 256 B โ 256 B โ 256 B โ 286.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ 8.28 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ โ
โโ 1.00 MB data split into 256 pieces 45.19 ยตs โ 792.5 ยตs โ 109.4 ยตs โ 132 ยตs โ 100 โ 100
โ 21.7 GiB/s โ 1.237 GiB/s โ 8.959 GiB/s โ 7.429 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 512 B โ 512 B โ 512 B โ 527.2 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ 4.515 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 8.251 KiB โ 8.251 KiB โ 8.251 KiB โ 8.251 KiB โ โ
โโ 16.00 MB data split into 16 pieces 4.305 ms โ 8.177 ms โ 4.703 ms โ 4.741 ms โ 100 โ 100
โ 3.855 GiB/s โ 2.03 GiB/s โ 3.529 GiB/s โ 3.501 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 32 B โ 32 B โ 32 B โ 62.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 16.00 MB data split into 32 pieces 2.63 ms โ 3.415 ms โ 2.963 ms โ 2.982 ms โ 100 โ 100
โ 6.126 GiB/s โ 4.718 GiB/s โ 5.437 GiB/s โ 5.403 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 64 B โ 64 B โ 64 B โ 94.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 16.00 MB data split into 64 pieces 1.153 ms โ 1.697 ms โ 1.273 ms โ 1.273 ms โ 100 โ 100
โ 13.76 GiB/s โ 9.347 GiB/s โ 12.46 GiB/s โ 12.45 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128 B โ 128 B โ 128 B โ 143.2 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โโ 16.00 MB data split into 128 pieces 743.5 ยตs โ 1.294 ms โ 862 ยตs โ 880.4 ยตs โ 100 โ 100
โ 21.17 GiB/s โ 12.16 GiB/s โ 18.26 GiB/s โ 17.88 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 256 B โ 256 B โ 256 B โ 286.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โโ 16.00 MB data split into 256 pieces 586.7 ยตs โ 1.195 ms โ 670.4 ยตs โ 684.4 ยตs โ 100 โ 100
โ 26.73 GiB/s โ 13.12 GiB/s โ 23.39 GiB/s โ 22.91 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 512 B โ 512 B โ 512 B โ 527.2 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ 64.51 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โโ 32.00 MB data split into 16 pieces 12.81 ms โ 14.98 ms โ 13.78 ms โ 13.75 ms โ 100 โ 100
โ 2.591 GiB/s โ 2.216 GiB/s โ 2.409 GiB/s โ 2.414 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 32 B โ 32 B โ 32 B โ 62.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โโ 32.00 MB data split into 32 pieces 8.681 ms โ 11.02 ms โ 9.191 ms โ 9.226 ms โ 100 โ 100
โ 3.712 GiB/s โ 2.924 GiB/s โ 3.506 GiB/s โ 3.492 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 64 B โ 64 B โ 64 B โ 94.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 32.00 MB data split into 64 pieces 4.778 ms โ 6.972 ms โ 5.617 ms โ 5.632 ms โ 100 โ 100
โ 6.642 GiB/s โ 4.552 GiB/s โ 5.65 GiB/s โ 5.635 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128 B โ 128 B โ 128 B โ 143.2 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 32.00 MB data split into 128 pieces 2.21 ms โ 3.055 ms โ 2.433 ms โ 2.444 ms โ 100 โ 100
โ 14.24 GiB/s โ 10.3 GiB/s โ 12.94 GiB/s โ 12.88 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 256 B โ 256 B โ 256 B โ 286.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โฐโ 32.00 MB data split into 256 pieces 1.386 ms โ 2.209 ms โ 1.629 ms โ 1.619 ms โ 100 โ 100
22.62 GiB/s โ 14.2 GiB/s โ 19.25 GiB/s โ 19.37 GiB/s โ โ
max alloc: โ โ โ โ โ
1 โ 1 โ 1 โ 1.01 โ โ
512 B โ 512 B โ 512 B โ 527.2 B โ โ
alloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2.01 โ โ
128.5 KiB โ 128.5 KiB โ 128.5 KiB โ 128.5 KiB โ โ
dealloc: โ โ โ โ โ
3 โ 3 โ 3 โ 3 โ โ
256.2 KiB โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ โ
# Recoding with AVX2-powered SIMD vector x scalar multiplication
Timer precision: 14 ns
full_rlnc_recoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ recode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 22.06 ยตs โ 37.4 ยตs โ 25.77 ยตs โ 26.23 ยตs โ 100 โ 100
โ 24.89 GiB/s โ 14.69 GiB/s โ 21.32 GiB/s โ 20.94 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ โ
โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 19.39 ยตs โ 27.08 ยตs โ 22.65 ยตs โ 22.32 ยตs โ 100 โ 100
โ 26.77 GiB/s โ 19.17 GiB/s โ 22.92 GiB/s โ 23.26 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 64.09 KiB โ 64.09 KiB โ 64.09 KiB โ 64.09 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 64.09 KiB โ 64.09 KiB โ 64.09 KiB โ 64.09 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ โ
โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 17.73 ยตs โ 22.41 ยตs โ 18.54 ยตs โ 18.53 ยตs โ 100 โ 100
โ 28.5 GiB/s โ 22.55 GiB/s โ 27.26 GiB/s โ 27.28 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 32.18 KiB โ 32.18 KiB โ 32.18 KiB โ 32.18 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 32.18 KiB โ 32.18 KiB โ 32.18 KiB โ 32.18 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ โ
โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 23.28 ยตs โ 38.67 ยตs โ 24.12 ยตs โ 24.57 ยตs โ 100 โ 100
โ 21.63 GiB/s โ 13.02 GiB/s โ 20.87 GiB/s โ 20.49 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 16.37 KiB โ 16.37 KiB โ 16.37 KiB โ 16.37 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 16.37 KiB โ 16.37 KiB โ 16.37 KiB โ 16.37 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ โ
โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 44.62 ยตs โ 60.58 ยตs โ 46.58 ยตs โ 47.26 ยตs โ 100 โ 100
โ 11.71 GiB/s โ 8.631 GiB/s โ 11.22 GiB/s โ 11.06 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 8.751 KiB โ 8.751 KiB โ 8.751 KiB โ 8.751 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 8.751 KiB โ 8.751 KiB โ 8.751 KiB โ 8.751 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ โ
โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 544.1 ยตs โ 852.5 ยตs โ 609.4 ยตs โ 609.9 ยตs โ 100 โ 100
โ 16.15 GiB/s โ 10.3 GiB/s โ 14.42 GiB/s โ 14.41 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 471.7 ยตs โ 616.5 ยตs โ 519.6 ยตs โ 522.2 ยตs โ 100 โ 100
โ 17.59 GiB/s โ 13.46 GiB/s โ 15.97 GiB/s โ 15.89 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 398.5 ยตs โ 587.5 ยตs โ 464.5 ยตs โ 466.3 ยตs โ 100 โ 100
โ 20.22 GiB/s โ 13.71 GiB/s โ 17.34 GiB/s โ 17.28 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 427.6 ยตs โ 567.9 ยตs โ 465.8 ยตs โ 467.7 ยตs โ 100 โ 100
โ 18.57 GiB/s โ 13.98 GiB/s โ 17.04 GiB/s โ 16.97 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 256.3 KiB โ 256.3 KiB โ 256.3 KiB โ 256.3 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 256.3 KiB โ 256.3 KiB โ 256.3 KiB โ 256.3 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 423.1 ยตs โ 718.2 ยตs โ 490.6 ยตs โ 494.2 ยตs โ 100 โ 100
โ 18.67 GiB/s โ 11 GiB/s โ 16.1 GiB/s โ 15.99 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ โ
โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 1.234 ms โ 1.604 ms โ 1.371 ms โ 1.374 ms โ 100 โ 100
โ 14.23 GiB/s โ 10.95 GiB/s โ 12.81 GiB/s โ 12.78 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 1.112 ms โ 1.525 ms โ 1.192 ms โ 1.194 ms โ 100 โ 100
โ 14.91 GiB/s โ 10.88 GiB/s โ 13.92 GiB/s โ 13.89 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 942.5 ยตs โ 1.109 ms โ 1.019 ms โ 1.017 ms โ 100 โ 100
โ 17.09 GiB/s โ 14.51 GiB/s โ 15.81 GiB/s โ 15.83 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 935.7 ยตs โ 1.266 ms โ 990.8 ยตs โ 994.9 ยตs โ 100 โ 100
โ 16.96 GiB/s โ 12.53 GiB/s โ 16.02 GiB/s โ 15.95 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 512.3 KiB โ 512.3 KiB โ 512.3 KiB โ 512.3 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 512.3 KiB โ 512.3 KiB โ 512.3 KiB โ 512.3 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ โ
โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 969.1 ยตs โ 1.437 ms โ 1.006 ms โ 1.015 ms โ 100 โ 100
16.28 GiB/s โ 10.97 GiB/s โ 15.67 GiB/s โ 15.53 GiB/s โ โ
max alloc: โ โ โ โ โ
4 โ 4 โ 4 โ 4 โ โ
256.7 KiB โ 256.7 KiB โ 256.7 KiB โ 256.7 KiB โ โ
alloc: โ โ โ โ โ
4 โ 4 โ 4 โ 4 โ โ
256.7 KiB โ 256.7 KiB โ 256.7 KiB โ 256.7 KiB โ โ
dealloc: โ โ โ โ โ
3 โ 3 โ 3 โ 3 โ โ
128.5 KiB โ 128.5 KiB โ 128.5 KiB โ 128.5 KiB โ โ
# ---------------------------------------------------------------------------------------------------------------------------
# Recoding with `rayon` data-parallelism, also using AVX2 intrinsics for faster vector x scalar multiplication
Timer precision: 25 ns
full_rlnc_recoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ recode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 79.71 ยตs โ 314.3 ยตs โ 165.7 ยตs โ 169.8 ยตs โ 100 โ 100
โ 6.892 GiB/s โ 1.747 GiB/s โ 3.314 GiB/s โ 3.234 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 48 B โ 48 B โ 48 B โ 63.2 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.01 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 192 KiB โ 192 KiB โ 192 KiB โ 192 KiB โ โ
โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 93.73 ยตs โ 452.7 ยตs โ 248.6 ยตs โ 264.1 ยตs โ 100 โ 100
โ 5.54 GiB/s โ 1.147 GiB/s โ 2.088 GiB/s โ 1.965 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 96 B โ 96 B โ 96 B โ 126.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 64.09 KiB โ 64.09 KiB โ 64.09 KiB โ 64.12 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 96.06 KiB โ 96.06 KiB โ 96.06 KiB โ 96.06 KiB โ โ
โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 91.63 ยตs โ 789.7 ยตs โ 211.5 ยตs โ 234.4 ยตs โ 100 โ 100
โ 5.517 GiB/s โ 655.5 MiB/s โ 2.39 GiB/s โ 2.156 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 192 B โ 192 B โ 192 B โ 207.2 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.01 โ โ
โ 32.18 KiB โ 32.18 KiB โ 32.18 KiB โ 32.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 48.12 KiB โ 48.12 KiB โ 48.12 KiB โ 48.12 KiB โ โ
โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 57.64 ยตs โ 179.8 ยตs โ 102 ยตs โ 103.6 ยตs โ 100 โ 100
โ 8.738 GiB/s โ 2.8 GiB/s โ 4.934 GiB/s โ 4.86 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 384 B โ 384 B โ 384 B โ 414.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 16.37 KiB โ 16.37 KiB โ 16.37 KiB โ 16.4 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 24.25 KiB โ 24.25 KiB โ 24.25 KiB โ 24.25 KiB โ โ
โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 77.32 ยตs โ 240.6 ยตs โ 118.5 ยตs โ 123.4 ยตs โ 100 โ 100
โ 6.763 GiB/s โ 2.172 GiB/s โ 4.409 GiB/s โ 4.235 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 768 B โ 768 B โ 768 B โ 783.2 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.01 โ โ
โ 8.751 KiB โ 8.751 KiB โ 8.751 KiB โ 8.766 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 12.5 KiB โ 12.5 KiB โ 12.5 KiB โ 12.5 KiB โ โ
โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 1.964 ms โ 3.789 ms โ 2.371 ms โ 2.424 ms โ 100 โ 100
โ 4.473 GiB/s โ 2.319 GiB/s โ 3.706 GiB/s โ 3.624 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 48 B โ 48 B โ 48 B โ 63.2 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.01 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 3 MiB โ 3 MiB โ 3 MiB โ 3 MiB โ โ
โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 1.716 ms โ 2.756 ms โ 1.914 ms โ 1.958 ms โ 100 โ 100
โ 4.836 GiB/s โ 3.011 GiB/s โ 4.337 GiB/s โ 4.238 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 96 B โ 96 B โ 96 B โ 126.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 1.5 MiB โ 1.5 MiB โ 1.5 MiB โ 1.5 MiB โ โ
โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 890.7 ยตs โ 1.648 ms โ 1.062 ms โ 1.089 ms โ 100 โ 100
โ 9.046 GiB/s โ 4.887 GiB/s โ 7.581 GiB/s โ 7.399 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 3 โ 2 โ 2 โ 2.02 โ โ
โ 1.671 KiB โ 192 B โ 192 B โ 222.4 B โ โ
โ alloc: โ โ โ โ โ
โ 5 โ 4 โ 4 โ 4.02 โ โ
โ 513.6 KiB โ 512.1 KiB โ 512.1 KiB โ 512.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 768.1 KiB โ 768.1 KiB โ 768.1 KiB โ 768.1 KiB โ โ
โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 609.9 ยตs โ 1.144 ms โ 763.9 ยตs โ 787.7 ยตs โ 100 โ 100
โ 13.02 GiB/s โ 6.939 GiB/s โ 10.39 GiB/s โ 10.08 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 384 B โ 384 B โ 384 B โ 414.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 256.3 KiB โ 256.3 KiB โ 256.3 KiB โ 256.4 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 384.2 KiB โ 384.2 KiB โ 384.2 KiB โ 384.2 KiB โ โ
โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 593.1 ยตs โ 1.428 ms โ 716.2 ยตs โ 770 ยตs โ 100 โ 100
โ 13.32 GiB/s โ 5.532 GiB/s โ 11.03 GiB/s โ 10.26 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 768 B โ 768 B โ 768 B โ 783.2 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.01 โ โ
โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 192.5 KiB โ 192.5 KiB โ 192.5 KiB โ 192.5 KiB โ โ
โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 5.115 ms โ 6.58 ms โ 5.597 ms โ 5.633 ms โ 100 โ 100
โ 3.436 GiB/s โ 2.671 GiB/s โ 3.14 GiB/s โ 3.12 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 48 B โ 48 B โ 48 B โ 78.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 6 MiB โ 6 MiB โ 6 MiB โ 6 MiB โ โ
โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 4.446 ms โ 5.619 ms โ 4.831 ms โ 4.889 ms โ 100 โ 100
โ 3.733 GiB/s โ 2.954 GiB/s โ 3.436 GiB/s โ 3.395 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 96 B โ 96 B โ 96 B โ 126.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 3 MiB โ 3 MiB โ 3 MiB โ 3 MiB โ โ
โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 2.965 ms โ 4.632 ms โ 3.2 ms โ 3.27 ms โ 100 โ 100
โ 5.433 GiB/s โ 3.478 GiB/s โ 5.035 GiB/s โ 4.927 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 192 B โ 192 B โ 192 B โ 222.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 1.5 MiB โ 1.5 MiB โ 1.5 MiB โ 1.5 MiB โ โ
โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 1.337 ms โ 2.332 ms โ 1.614 ms โ 1.661 ms โ 100 โ 100
โ 11.86 GiB/s โ 6.807 GiB/s โ 9.834 GiB/s โ 9.557 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 384 B โ 384 B โ 384 B โ 414.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 512.3 KiB โ 512.3 KiB โ 512.3 KiB โ 512.4 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 768.2 KiB โ 768.2 KiB โ 768.2 KiB โ 768.2 KiB โ โ
โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 990.8 ยตs โ 2.347 ms โ 1.249 ms โ 1.286 ms โ 100 โ 100
15.92 GiB/s โ 6.722 GiB/s โ 12.63 GiB/s โ 12.26 GiB/s โ โ
max alloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2.01 โ โ
768 B โ 768 B โ 768 B โ 783.2 B โ โ
alloc: โ โ โ โ โ
4 โ 4 โ 4 โ 4.01 โ โ
256.7 KiB โ 256.7 KiB โ 256.7 KiB โ 256.7 KiB โ โ
dealloc: โ โ โ โ โ
5 โ 5 โ 5 โ 5 โ โ
384.5 KiB โ 384.5 KiB โ 384.5 KiB โ 384.5 KiB โ โ
# Decoding with AVX2-powered SIMD vector x scalar multiplication
Timer precision: 18 ns
full_rlnc_decoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ decode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 600 ยตs โ 1.041 ms โ 615.2 ยตs โ 622.9 ยตs โ 100 โ 100
โ 1.627 GiB/s โ 960.8 MiB/s โ 1.587 GiB/s โ 1.568 GiB/s โ โ
โโ 1.00 MB data split into 32 pieces 1.18 ms โ 1.629 ms โ 1.201 ms โ 1.207 ms โ 100 โ 100
โ 847.6 MiB/s โ 614.1 MiB/s โ 833 MiB/s โ 829.2 MiB/s โ โ
โโ 1.00 MB data split into 64 pieces 2.267 ms โ 2.404 ms โ 2.299 ms โ 2.302 ms โ 100 โ 100
โ 442.7 MiB/s โ 417.5 MiB/s โ 436.6 MiB/s โ 436 MiB/s โ โ
โโ 1.00 MB data split into 128 pieces 5.296 ms โ 5.583 ms โ 5.333 ms โ 5.338 ms โ 100 โ 100
โ 191.7 MiB/s โ 181.9 MiB/s โ 190.4 MiB/s โ 190.2 MiB/s โ โ
โโ 1.00 MB data split into 256 pieces 15.27 ms โ 16.21 ms โ 15.55 ms โ 15.55 ms โ 100 โ 100
โ 69.59 MiB/s โ 65.54 MiB/s โ 68.33 MiB/s โ 68.32 MiB/s โ โ
โโ 16.00 MB data split into 16 pieces 16.4 ms โ 20.56 ms โ 16.97 ms โ 17.08 ms โ 100 โ 100
โ 975.5 MiB/s โ 778.1 MiB/s โ 942.4 MiB/s โ 936.5 MiB/s โ โ
โโ 16.00 MB data split into 32 pieces 27.24 ms โ 30.95 ms โ 28.12 ms โ 28.26 ms โ 100 โ 100
โ 587.3 MiB/s โ 516.8 MiB/s โ 568.9 MiB/s โ 566 MiB/s โ โ
โโ 16.00 MB data split into 64 pieces 49.54 ms โ 62.7 ms โ 49.74 ms โ 50.23 ms โ 100 โ 100
โ 323 MiB/s โ 255.2 MiB/s โ 321.6 MiB/s โ 318.5 MiB/s โ โ
โโ 16.00 MB data split into 128 pieces 98.43 ms โ 102.1 ms โ 98.98 ms โ 99.32 ms โ 100 โ 100
โ 162.6 MiB/s โ 156.7 MiB/s โ 161.8 MiB/s โ 161.2 MiB/s โ โ
โโ 16.00 MB data split into 256 pieces 201.8 ms โ 209.3 ms โ 202.7 ms โ 203 ms โ 100 โ 100
โ 79.58 MiB/s โ 76.73 MiB/s โ 79.21 MiB/s โ 79.11 MiB/s โ โ
โโ 32.00 MB data split into 16 pieces 46.33 ms โ 49.04 ms โ 46.51 ms โ 46.7 ms โ 100 โ 100
โ 690.5 MiB/s โ 652.4 MiB/s โ 687.8 MiB/s โ 685.1 MiB/s โ โ
โโ 32.00 MB data split into 32 pieces 78.74 ms โ 81.78 ms โ 79.06 ms โ 79.29 ms โ 100 โ 100
โ 406.4 MiB/s โ 391.2 MiB/s โ 404.7 MiB/s โ 403.5 MiB/s โ โ
โโ 32.00 MB data split into 64 pieces 132.4 ms โ 137.6 ms โ 132.9 ms โ 133.3 ms โ 100 โ 100
โ 241.5 MiB/s โ 232.4 MiB/s โ 240.7 MiB/s โ 239.9 MiB/s โ โ
โโ 32.00 MB data split into 128 pieces 241.9 ms โ 249.3 ms โ 243.1 ms โ 243.6 ms โ 100 โ 100
โ 132.3 MiB/s โ 128.4 MiB/s โ 131.6 MiB/s โ 131.4 MiB/s โ โ
โฐโ 32.00 MB data split into 256 pieces 476 ms โ 485.5 ms โ 479.1 ms โ 479.4 ms โ 100 โ 100
67.35 MiB/s โ 66.03 MiB/s โ 66.9 MiB/s โ 66.87 MiB/s โ โ
m8g.large
with Graviton4 CPURunning benchmarks on Linux 6.8.0-1029-aws aarch64
, compiled with rustc 1.89.0 (29483883e 2025-08-04)
.
Component | Peak Median Throughput (default feature) |
Peak Median Throughput (parallel feature) |
Impact of number of pieces on performance |
---|---|---|---|
Full RLNC Encoder | 19.73 GiB/s | 12.95 GiB/s | The number of pieces original data got split into has a minimal impact on the encoding speed. |
Full RLNC Recoder | 19.2 GiB/s | 10.43 GiB/s | Similar to the encoder, the recoder's performance remains largely consistent regardless of how many pieces the original data is split into. |
Full RLNC Decoder | 0.84 GiB/s | Doesn't yet implement a parallel decoding mode | As the number of pieces increases, the decoding time increases substantially, leading to a considerable drop in throughput. This indicates that decoding is the most computationally intensive part of the full RLNC scheme, and its performance is inversely proportional to the number of pieces. |
In summary, the full RLNC implementation demonstrates excellent encoding and recoding speeds, consistently achieving GiB/s throughputs with minimal sensitivity to the number of data pieces. The parallel
feature, leveraging Rust rayon
data-parallelism framework, also provides good performance for both encoding and recoding. Whether you want to use that feature, completely depends on your usecase. However, decoding remains a much slower operation, with its performance significantly diminishing as the data is split into a greater number of pieces, and currently does not implement a parallel decoding algorithm.
# Encoding with NEON-powered SIMD vector x scalar multiplication
Timer precision: 30 ns
full_rlnc_encoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ encode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 48.42 ยตs โ 95.57 ยตs โ 54.2 ยตs โ 58.82 ยตs โ 100 โ 100
โ 21.42 GiB/s โ 10.85 GiB/s โ 19.14 GiB/s โ 17.63 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 16 B โ 16 B โ 16 B โ 16 B โ โ
โโ 1.00 MB data split into 32 pieces 48.87 ยตs โ 79.4 ยตs โ 51.04 ยตs โ 56.78 ยตs โ 100 โ 100
โ 20.6 GiB/s โ 12.68 GiB/s โ 19.73 GiB/s โ 17.73 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 32 B โ 32 B โ 32 B โ 32 B โ โ
โโ 1.00 MB data split into 64 pieces 49.69 ยตs โ 79.63 ยตs โ 51.64 ยตs โ 57.23 ยตs โ 100 โ 100
โ 19.96 GiB/s โ 12.45 GiB/s โ 19.2 GiB/s โ 17.33 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 64 B โ 64 B โ 64 B โ 64 B โ โ
โโ 1.00 MB data split into 128 pieces 50.13 ยตs โ 83.67 ยตs โ 51.43 ยตs โ 57.33 ยตs โ 100 โ 100
โ 19.63 GiB/s โ 11.76 GiB/s โ 19.13 GiB/s โ 17.16 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128 B โ 128 B โ 128 B โ 128 B โ โ
โโ 1.00 MB data split into 256 pieces 50.62 ยตs โ 80.58 ยตs โ 52.07 ยตs โ 57.94 ยตs โ 100 โ 100
โ 19.37 GiB/s โ 12.17 GiB/s โ 18.83 GiB/s โ 16.92 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 256 B โ 256 B โ 256 B โ 256 B โ โ
โโ 16.00 MB data split into 16 pieces 1.187 ms โ 1.419 ms โ 1.277 ms โ 1.287 ms โ 100 โ 100
โ 13.97 GiB/s โ 11.69 GiB/s โ 13 GiB/s โ 12.89 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 16 B โ 16 B โ 16 B โ 16 B โ โ
โโ 16.00 MB data split into 32 pieces 1.111 ms โ 1.316 ms โ 1.231 ms โ 1.233 ms โ 100 โ 100
โ 14.49 GiB/s โ 12.23 GiB/s โ 13.08 GiB/s โ 13.06 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 32 B โ 32 B โ 32 B โ 32 B โ โ
โโ 16.00 MB data split into 64 pieces 1.171 ms โ 1.281 ms โ 1.219 ms โ 1.219 ms โ 100 โ 100
โ 13.55 GiB/s โ 12.38 GiB/s โ 13.01 GiB/s โ 13.01 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 64 B โ 64 B โ 64 B โ 64 B โ โ
โโ 16.00 MB data split into 128 pieces 1.16 ms โ 1.254 ms โ 1.21 ms โ 1.21 ms โ 100 โ 100
โ 13.57 GiB/s โ 12.55 GiB/s โ 13 GiB/s โ 13 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128 B โ 128 B โ 128 B โ 128 B โ โ
โโ 16.00 MB data split into 256 pieces 1.125 ms โ 1.302 ms โ 1.175 ms โ 1.179 ms โ 100 โ 100
โ 13.93 GiB/s โ 12.04 GiB/s โ 13.34 GiB/s โ 13.29 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 256 B โ 256 B โ 256 B โ 256 B โ โ
โโ 32.00 MB data split into 16 pieces 2.405 ms โ 3.332 ms โ 2.653 ms โ 2.663 ms โ 100 โ 100
โ 13.8 GiB/s โ 9.962 GiB/s โ 12.51 GiB/s โ 12.46 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 16 B โ 16 B โ 16 B โ 16 B โ โ
โโ 32.00 MB data split into 32 pieces 2.388 ms โ 2.928 ms โ 2.569 ms โ 2.602 ms โ 100 โ 100
โ 13.49 GiB/s โ 11 GiB/s โ 12.54 GiB/s โ 12.38 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 32 B โ 32 B โ 32 B โ 32 B โ โ
โโ 32.00 MB data split into 64 pieces 2.416 ms โ 2.704 ms โ 2.487 ms โ 2.492 ms โ 100 โ 100
โ 13.13 GiB/s โ 11.73 GiB/s โ 12.75 GiB/s โ 12.73 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 64 B โ 64 B โ 64 B โ 64 B โ โ
โโ 32.00 MB data split into 128 pieces 2.442 ms โ 2.596 ms โ 2.501 ms โ 2.501 ms โ 100 โ 100
โ 12.89 GiB/s โ 12.12 GiB/s โ 12.59 GiB/s โ 12.58 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128 B โ 128 B โ 128 B โ 128 B โ โ
โฐโ 32.00 MB data split into 256 pieces 2.453 ms โ 2.734 ms โ 2.499 ms โ 2.508 ms โ 100 โ 100
12.78 GiB/s โ 11.47 GiB/s โ 12.54 GiB/s โ 12.5 GiB/s โ โ
max alloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2 โ โ
128.5 KiB โ 128.5 KiB โ 128.5 KiB โ 128.5 KiB โ โ
alloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2 โ โ
128.5 KiB โ 128.5 KiB โ 128.5 KiB โ 128.5 KiB โ โ
dealloc: โ โ โ โ โ
1 โ 1 โ 1 โ 1 โ โ
256 B โ 256 B โ 256 B โ 256 B โ โ
# ---------------------------------------------------------------------------------------------------------------------------
# Encoding with `rayon` data-parallelism, also using NEON intrinsics for faster vector x scalar multiplication
Timer precision: 29 ns
full_rlnc_encoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ encode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 293.3 ยตs โ 586.2 ยตs โ 312.7 ยตs โ 315.3 ยตs โ 100 โ 100
โ 3.537 GiB/s โ 1.77 GiB/s โ 3.317 GiB/s โ 3.29 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 28 โ 1 โ 1.28 โ โ
โ 32 B โ 8.89 KiB โ 32 B โ 137.9 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 34 โ 2 โ 2.33 โ โ
โ 64.03 KiB โ 73.28 KiB โ 64.03 KiB โ 64.13 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 10 โ 3 โ 3.07 โ โ
โ 128 KiB โ 128.5 KiB โ 128 KiB โ 128 KiB โ โ
โโ 1.00 MB data split into 32 pieces 86.27 ยตs โ 139.5 ยตs โ 117 ยตs โ 113.1 ยตs โ 100 โ 100
โ 11.67 GiB/s โ 7.218 GiB/s โ 8.606 GiB/s โ 8.903 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 64 B โ 64 B โ 64 B โ 94.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ 32.09 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ โ
โโ 1.00 MB data split into 64 pieces 63.67 ยตs โ 99.71 ยตs โ 94.41 ยตs โ 87.67 ยตs โ 100 โ 100
โ 15.57 GiB/s โ 9.947 GiB/s โ 10.5 GiB/s โ 11.31 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128 B โ 128 B โ 128 B โ 143.2 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ 16.14 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ โ
โโ 1.00 MB data split into 128 pieces 61.64 ยตs โ 91.68 ยตs โ 78.71 ยตs โ 75.94 ยตs โ 100 โ 100
โ 15.97 GiB/s โ 10.73 GiB/s โ 12.5 GiB/s โ 12.96 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 256 B โ 256 B โ 256 B โ 286.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ 8.28 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ โ
โโ 1.00 MB data split into 256 pieces 60.71 ยตs โ 89.44 ยตs โ 75.68 ยตs โ 75.35 ยตs โ 100 โ 100
โ 16.15 GiB/s โ 10.96 GiB/s โ 12.95 GiB/s โ 13.01 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 512 B โ 512 B โ 512 B โ 527.2 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ 4.515 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 8.251 KiB โ 8.251 KiB โ 8.251 KiB โ 8.251 KiB โ โ
โโ 16.00 MB data split into 16 pieces 4.133 ms โ 6.11 ms โ 4.273 ms โ 4.311 ms โ 100 โ 100
โ 4.016 GiB/s โ 2.716 GiB/s โ 3.885 GiB/s โ 3.85 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 32 B โ 32 B โ 32 B โ 62.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 16.00 MB data split into 32 pieces 1.894 ms โ 2.374 ms โ 1.928 ms โ 1.936 ms โ 100 โ 100
โ 8.507 GiB/s โ 6.785 GiB/s โ 8.355 GiB/s โ 8.322 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1.5 โ 1.02 โ โ
โ 64 B โ 64 B โ 824 B โ 94.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2.5 โ 2.02 โ โ
โ 512 KiB โ 512 KiB โ 512.8 KiB โ 512 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 16.00 MB data split into 64 pieces 1.526 ms โ 2.026 ms โ 1.58 ms โ 1.585 ms โ 100 โ 100
โ 10.39 GiB/s โ 7.83 GiB/s โ 10.04 GiB/s โ 10 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128 B โ 128 B โ 128 B โ 143.2 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โโ 16.00 MB data split into 128 pieces 1.401 ms โ 2.082 ms โ 1.441 ms โ 1.449 ms โ 100 โ 100
โ 11.23 GiB/s โ 7.562 GiB/s โ 10.92 GiB/s โ 10.86 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 256 B โ 256 B โ 256 B โ 286.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โโ 16.00 MB data split into 256 pieces 1.314 ms โ 2.428 ms โ 1.363 ms โ 1.393 ms โ 100 โ 100
โ 11.93 GiB/s โ 6.459 GiB/s โ 11.5 GiB/s โ 11.25 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 512 B โ 512 B โ 512 B โ 527.2 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ 64.51 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โโ 32.00 MB data split into 16 pieces 13.55 ms โ 15.75 ms โ 14.09 ms โ 14.11 ms โ 100 โ 100
โ 2.448 GiB/s โ 2.108 GiB/s โ 2.356 GiB/s โ 2.352 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 32 B โ 32 B โ 32 B โ 62.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โโ 32.00 MB data split into 32 pieces 5.465 ms โ 5.93 ms โ 5.64 ms โ 5.647 ms โ 100 โ 100
โ 5.896 GiB/s โ 5.434 GiB/s โ 5.713 GiB/s โ 5.706 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 64 B โ 64 B โ 64 B โ 94.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 32.00 MB data split into 64 pieces 3.184 ms โ 3.789 ms โ 3.23 ms โ 3.237 ms โ 100 โ 100
โ 9.966 GiB/s โ 8.374 GiB/s โ 9.825 GiB/s โ 9.803 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128 B โ 128 B โ 128 B โ 143.2 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 32.00 MB data split into 128 pieces 2.812 ms โ 2.909 ms โ 2.869 ms โ 2.867 ms โ 100 โ 100
โ 11.19 GiB/s โ 10.82 GiB/s โ 10.97 GiB/s โ 10.98 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.02 โ โ
โ 256 B โ 256 B โ 256 B โ 286.4 B โ โ
โ alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โฐโ 32.00 MB data split into 256 pieces 2.765 ms โ 2.871 ms โ 2.823 ms โ 2.825 ms โ 100 โ 100
11.34 GiB/s โ 10.92 GiB/s โ 11.11 GiB/s โ 11.1 GiB/s โ โ
max alloc: โ โ โ โ โ
1 โ 1 โ 1 โ 1.01 โ โ
512 B โ 512 B โ 512 B โ 527.2 B โ โ
alloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2.01 โ โ
128.5 KiB โ 128.5 KiB โ 128.5 KiB โ 128.5 KiB โ โ
dealloc: โ โ โ โ โ
3 โ 3 โ 3 โ 3 โ โ
256.2 KiB โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ โ
# Recoding with NEON-powered SIMD vector x scalar multiplication
Timer precision: 30 ns
full_rlnc_recoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ recode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 27.49 ยตs โ 41.84 ยตs โ 28.61 ยตs โ 29.38 ยตs โ 100 โ 100
โ 19.98 GiB/s โ 13.13 GiB/s โ 19.2 GiB/s โ 18.69 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ 64.03 KiB โ โ
โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 24.3 ยตs โ 43.78 ยตs โ 36.83 ยตs โ 33.03 ยตs โ 100 โ 100
โ 21.36 GiB/s โ 11.86 GiB/s โ 14.09 GiB/s โ 15.72 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 64.09 KiB โ 64.09 KiB โ 64.09 KiB โ 64.09 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 64.09 KiB โ 64.09 KiB โ 64.09 KiB โ 64.09 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ 32.06 KiB โ โ
โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 25.18 ยตs โ 44.22 ยตs โ 38.97 ยตs โ 34.28 ยตs โ 100 โ 100
โ 20.07 GiB/s โ 11.43 GiB/s โ 12.97 GiB/s โ 14.74 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 32.18 KiB โ 32.18 KiB โ 32.18 KiB โ 32.18 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 32.18 KiB โ 32.18 KiB โ 32.18 KiB โ 32.18 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ 16.12 KiB โ โ
โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 32.77 ยตs โ 50.62 ยตs โ 41.25 ยตs โ 40.07 ยตs โ 100 โ 100
โ 15.36 GiB/s โ 9.95 GiB/s โ 12.21 GiB/s โ 12.56 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 16.37 KiB โ 16.37 KiB โ 16.37 KiB โ 16.37 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 16.37 KiB โ 16.37 KiB โ 16.37 KiB โ 16.37 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ 8.25 KiB โ โ
โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 57.61 ยตs โ 74.53 ยตs โ 59.79 ยตs โ 62.69 ยตs โ 100 โ 100
โ 9.076 GiB/s โ 7.016 GiB/s โ 8.745 GiB/s โ 8.341 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 8.751 KiB โ 8.751 KiB โ 8.751 KiB โ 8.751 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 8.751 KiB โ 8.751 KiB โ 8.751 KiB โ 8.751 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ 4.5 KiB โ โ
โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 546.8 ยตs โ 692.2 ยตs โ 648.8 ยตs โ 649.1 ยตs โ 100 โ 100
โ 16.07 GiB/s โ 12.69 GiB/s โ 13.54 GiB/s โ 13.53 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 554.7 ยตs โ 660.2 ยตs โ 610.1 ยตs โ 605.5 ยตs โ 100 โ 100
โ 14.96 GiB/s โ 12.57 GiB/s โ 13.6 GiB/s โ 13.7 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 534.3 ยตs โ 631.3 ยตs โ 599.2 ยตs โ 596.6 ยตs โ 100 โ 100
โ 15.08 GiB/s โ 12.76 GiB/s โ 13.44 GiB/s โ 13.5 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 563.4 ยตs โ 651.1 ยตs โ 606.2 ยตs โ 604.6 ยตs โ 100 โ 100
โ 14.09 GiB/s โ 12.19 GiB/s โ 13.1 GiB/s โ 13.13 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 256.3 KiB โ 256.3 KiB โ 256.3 KiB โ 256.3 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 256.3 KiB โ 256.3 KiB โ 256.3 KiB โ 256.3 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 564.6 ยตs โ 636.5 ยตs โ 610.1 ยตs โ 606.1 ยตs โ 100 โ 100
โ 13.99 GiB/s โ 12.41 GiB/s โ 12.95 GiB/s โ 13.04 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ 64.5 KiB โ โ
โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 1.215 ms โ 1.469 ms โ 1.394 ms โ 1.39 ms โ 100 โ 100
โ 14.46 GiB/s โ 11.96 GiB/s โ 12.6 GiB/s โ 12.64 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 1.163 ms โ 1.411 ms โ 1.258 ms โ 1.259 ms โ 100 โ 100
โ 14.27 GiB/s โ 11.75 GiB/s โ 13.19 GiB/s โ 13.18 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 1.068 ms โ 1.256 ms โ 1.198 ms โ 1.194 ms โ 100 โ 100
โ 15.08 GiB/s โ 12.82 GiB/s โ 13.44 GiB/s โ 13.48 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ 512.1 KiB โ โ
โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 1.161 ms โ 1.43 ms โ 1.214 ms โ 1.22 ms โ 100 โ 100
โ 13.66 GiB/s โ 11.09 GiB/s โ 13.07 GiB/s โ 13 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 512.3 KiB โ 512.3 KiB โ 512.3 KiB โ 512.3 KiB โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4 โ โ
โ 512.3 KiB โ 512.3 KiB โ 512.3 KiB โ 512.3 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 3 โ 3 โ 3 โ 3 โ โ
โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ 256.2 KiB โ โ
โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 1.191 ms โ 1.275 ms โ 1.214 ms โ 1.216 ms โ 100 โ 100
13.23 GiB/s โ 12.37 GiB/s โ 12.98 GiB/s โ 12.96 GiB/s โ โ
max alloc: โ โ โ โ โ
4 โ 4 โ 4 โ 4 โ โ
256.7 KiB โ 256.7 KiB โ 256.7 KiB โ 256.7 KiB โ โ
alloc: โ โ โ โ โ
4 โ 4 โ 4 โ 4 โ โ
256.7 KiB โ 256.7 KiB โ 256.7 KiB โ 256.7 KiB โ โ
dealloc: โ โ โ โ โ
3 โ 3 โ 3 โ 3 โ โ
128.5 KiB โ 128.5 KiB โ 128.5 KiB โ 128.5 KiB โ โ
# ---------------------------------------------------------------------------------------------------------------------------
# Recoding with `rayon` data-parallelism, also using NEON intrinsics for faster vector x scalar multiplication
Timer precision: 30 ns
full_rlnc_recoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ recode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 62.72 ยตs โ 113.7 ยตs โ 76.8 ยตs โ 78.65 ยตs โ 100 โ 100
โ 8.759 GiB/s โ 4.828 GiB/s โ 7.154 GiB/s โ 6.985 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 48 B โ 48 B โ 48 B โ 63.2 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.01 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 192 KiB โ 192 KiB โ 192 KiB โ 192 KiB โ โ
โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 60.66 ยตs โ 106.2 ยตs โ 91.03 ยตs โ 88.24 ยตs โ 100 โ 100
โ 8.56 GiB/s โ 4.889 GiB/s โ 5.704 GiB/s โ 5.885 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 96 B โ 96 B โ 96 B โ 126.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 64.09 KiB โ 64.09 KiB โ 64.09 KiB โ 64.12 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 96.06 KiB โ 96.06 KiB โ 96.06 KiB โ 96.06 KiB โ โ
โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 50.34 ยตs โ 87.71 ยตs โ 69.52 ยตs โ 70.19 ยตs โ 100 โ 100
โ 10.04 GiB/s โ 5.763 GiB/s โ 7.271 GiB/s โ 7.202 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 192 B โ 192 B โ 192 B โ 207.2 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.01 โ โ
โ 32.18 KiB โ 32.18 KiB โ 32.18 KiB โ 32.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 48.12 KiB โ 48.12 KiB โ 48.12 KiB โ 48.12 KiB โ โ
โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 51.52 ยตs โ 80.65 ยตs โ 66 ยตs โ 66.44 ยตs โ 100 โ 100
โ 9.775 GiB/s โ 6.245 GiB/s โ 7.631 GiB/s โ 7.58 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 384 B โ 384 B โ 384 B โ 414.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 16.37 KiB โ 16.37 KiB โ 16.37 KiB โ 16.4 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 24.25 KiB โ 24.25 KiB โ 24.25 KiB โ 24.25 KiB โ โ
โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 74.76 ยตs โ 104.8 ยตs โ 87.53 ยตs โ 87.52 ยตs โ 100 โ 100
โ 6.995 GiB/s โ 4.99 GiB/s โ 5.974 GiB/s โ 5.975 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 768 B โ 768 B โ 768 B โ 783.2 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.01 โ โ
โ 8.751 KiB โ 8.751 KiB โ 8.751 KiB โ 8.766 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 12.5 KiB โ 12.5 KiB โ 12.5 KiB โ 12.5 KiB โ โ
โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 1.535 ms โ 2.769 ms โ 1.61 ms โ 1.65 ms โ 100 โ 100
โ 5.722 GiB/s โ 3.173 GiB/s โ 5.456 GiB/s โ 5.324 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 48 B โ 48 B โ 48 B โ 63.2 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.01 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 3 MiB โ 3 MiB โ 3 MiB โ 3 MiB โ โ
โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 1.291 ms โ 2.089 ms โ 1.35 ms โ 1.384 ms โ 100 โ 100
โ 6.427 GiB/s โ 3.973 GiB/s โ 6.147 GiB/s โ 5.996 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2.5 โ 2.02 โ โ
โ 96 B โ 96 B โ 856 B โ 126.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4.5 โ 4.02 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 1.5 MiB โ 1.5 MiB โ 1.5 MiB โ 1.5 MiB โ โ
โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 896.5 ยตs โ 1.281 ms โ 938 ยตs โ 945.7 ยตs โ 100 โ 100
โ 8.988 GiB/s โ 6.287 GiB/s โ 8.59 GiB/s โ 8.52 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 3 โ 2 โ 2.02 โ โ
โ 192 B โ 1.671 KiB โ 192 B โ 222.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 5 โ 4 โ 4.02 โ โ
โ 512.1 KiB โ 513.6 KiB โ 512.1 KiB โ 512.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 768.1 KiB โ 768.1 KiB โ 768.1 KiB โ 768.1 KiB โ โ
โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 786.4 ยตs โ 1.679 ms โ 825.5 ยตs โ 873.1 ยตs โ 100 โ 100
โ 10.09 GiB/s โ 4.729 GiB/s โ 9.621 GiB/s โ 9.096 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 384 B โ 384 B โ 384 B โ 414.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 256.3 KiB โ 256.3 KiB โ 256.3 KiB โ 256.4 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 384.2 KiB โ 384.2 KiB โ 384.2 KiB โ 384.2 KiB โ โ
โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 755.4 ยตs โ 1.283 ms โ 786 ยตs โ 831.8 ยตs โ 100 โ 100
โ 10.46 GiB/s โ 6.157 GiB/s โ 10.05 GiB/s โ 9.502 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.01 โ โ
โ 768 B โ 768 B โ 768 B โ 783.2 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.01 โ โ
โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ 128.7 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 192.5 KiB โ 192.5 KiB โ 192.5 KiB โ 192.5 KiB โ โ
โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 3.313 ms โ 5.537 ms โ 3.483 ms โ 3.566 ms โ 100 โ 100
โ 5.305 GiB/s โ 3.174 GiB/s โ 5.046 GiB/s โ 4.928 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 48 B โ 48 B โ 48 B โ 78.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 6 MiB โ 6 MiB โ 6 MiB โ 6 MiB โ โ
โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 2.879 ms โ 5.134 ms โ 3.067 ms โ 3.12 ms โ 100 โ 100
โ 5.765 GiB/s โ 3.233 GiB/s โ 5.413 GiB/s โ 5.32 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 96 B โ 96 B โ 96 B โ 126.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 3 MiB โ 3 MiB โ 3 MiB โ 3 MiB โ โ
โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 1.922 ms โ 3.468 ms โ 1.996 ms โ 2.021 ms โ 100 โ 100
โ 8.381 GiB/s โ 4.646 GiB/s โ 8.073 GiB/s โ 7.973 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2.5 โ 2.02 โ โ
โ 192 B โ 192 B โ 952 B โ 222.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4.5 โ 4.02 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 1.5 MiB โ 1.5 MiB โ 1.5 MiB โ 1.5 MiB โ โ
โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 1.556 ms โ 2.314 ms โ 1.599 ms โ 1.628 ms โ 100 โ 100
โ 10.19 GiB/s โ 6.86 GiB/s โ 9.927 GiB/s โ 9.747 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2.02 โ โ
โ 384 B โ 384 B โ 384 B โ 414.4 B โ โ
โ alloc: โ โ โ โ โ
โ 4 โ 4 โ 4 โ 4.02 โ โ
โ 512.3 KiB โ 512.3 KiB โ 512.3 KiB โ 512.4 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 5 โ 5 โ 5 โ 5 โ โ
โ 768.2 KiB โ 768.2 KiB โ 768.2 KiB โ 768.2 KiB โ โ
โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 1.481 ms โ 1.76 ms โ 1.512 ms โ 1.529 ms โ 100 โ 100
10.64 GiB/s โ 8.963 GiB/s โ 10.43 GiB/s โ 10.31 GiB/s โ โ
max alloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2.01 โ โ
768 B โ 768 B โ 768 B โ 783.2 B โ โ
alloc: โ โ โ โ โ
4 โ 4 โ 4 โ 4.01 โ โ
256.7 KiB โ 256.7 KiB โ 256.7 KiB โ 256.7 KiB โ โ
dealloc: โ โ โ โ โ
5 โ 5 โ 5 โ 5 โ โ
384.5 KiB โ 384.5 KiB โ 384.5 KiB โ 384.5 KiB โ โ
# Decoding with NEON-powered SIMD vector x scalar multiplication
Timer precision: 30 ns
full_rlnc_decoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ decode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 1.124 ms โ 1.409 ms โ 1.163 ms โ 1.165 ms โ 100 โ 100
โ 889.4 MiB/s โ 709.6 MiB/s โ 859.6 MiB/s โ 858.2 MiB/s โ โ
โโ 1.00 MB data split into 32 pieces 1.921 ms โ 2.209 ms โ 1.972 ms โ 1.972 ms โ 100 โ 100
โ 520.9 MiB/s โ 453 MiB/s โ 507.4 MiB/s โ 507.3 MiB/s โ โ
โโ 1.00 MB data split into 64 pieces 3.873 ms โ 3.94 ms โ 3.896 ms โ 3.896 ms โ 100 โ 100
โ 259.1 MiB/s โ 254.7 MiB/s โ 257.6 MiB/s โ 257.6 MiB/s โ โ
โโ 1.00 MB data split into 128 pieces 8.395 ms โ 8.71 ms โ 8.428 ms โ 8.431 ms โ 100 โ 100
โ 120.9 MiB/s โ 116.6 MiB/s โ 120.5 MiB/s โ 120.4 MiB/s โ โ
โโ 1.00 MB data split into 256 pieces 21.13 ms โ 21.46 ms โ 21.18 ms โ 21.18 ms โ 100 โ 100
โ 50.28 MiB/s โ 49.52 MiB/s โ 50.16 MiB/s โ 50.16 MiB/s โ โ
โโ 16.00 MB data split into 16 pieces 21.14 ms โ 24.37 ms โ 21.34 ms โ 21.38 ms โ 100 โ 100
โ 756.7 MiB/s โ 656.3 MiB/s โ 749.7 MiB/s โ 748.3 MiB/s โ โ
โโ 16.00 MB data split into 32 pieces 41.03 ms โ 42.49 ms โ 41.52 ms โ 41.56 ms โ 100 โ 100
โ 389.9 MiB/s โ 376.5 MiB/s โ 385.3 MiB/s โ 384.9 MiB/s โ โ
โโ 16.00 MB data split into 64 pieces 81.35 ms โ 85.9 ms โ 82.83 ms โ 83.08 ms โ 100 โ 100
โ 196.7 MiB/s โ 186.2 MiB/s โ 193.1 MiB/s โ 192.6 MiB/s โ โ
โโ 16.00 MB data split into 128 pieces 161.9 ms โ 181.5 ms โ 165.3 ms โ 165.9 ms โ 100 โ 100
โ 98.92 MiB/s โ 88.19 MiB/s โ 96.88 MiB/s โ 96.5 MiB/s โ โ
โโ 16.00 MB data split into 256 pieces 318.8 ms โ 337.4 ms โ 326.3 ms โ 326.7 ms โ 100 โ 100
โ 50.38 MiB/s โ 47.6 MiB/s โ 49.22 MiB/s โ 49.15 MiB/s โ โ
โโ 32.00 MB data split into 16 pieces 49.19 ms โ 52.28 ms โ 49.53 ms โ 49.78 ms โ 100 โ 100
โ 650.4 MiB/s โ 611.9 MiB/s โ 646 MiB/s โ 642.8 MiB/s โ โ
โโ 32.00 MB data split into 32 pieces 88.63 ms โ 94.25 ms โ 89.37 ms โ 89.7 ms โ 100 โ 100
โ 361 MiB/s โ 339.5 MiB/s โ 358 MiB/s โ 356.7 MiB/s โ โ
โโ 32.00 MB data split into 64 pieces 169.7 ms โ 176.9 ms โ 171.7 ms โ 172.1 ms โ 100 โ 100
โ 188.5 MiB/s โ 180.8 MiB/s โ 186.3 MiB/s โ 185.9 MiB/s โ โ
โโ 32.00 MB data split into 128 pieces 334.2 ms โ 358.2 ms โ 339.3 ms โ 340.6 ms โ 100 โ 100
โ 95.77 MiB/s โ 89.36 MiB/s โ 94.35 MiB/s โ 93.97 MiB/s โ โ
โฐโ 32.00 MB data split into 256 pieces 672 ms โ 728.8 ms โ 688.9 ms โ 691.1 ms โ 100 โ 100
47.7 MiB/s โ 43.99 MiB/s โ 46.54 MiB/s โ 46.38 MiB/s โ โ
m7i.xlarge
with Intel(R) Xeon(R) Platinum 8488CRunning benchmarks on Linux 6.14.0-1011-aws x86_64
, compiled with rustc 1.89.0 (29483883e 2025-08-04)
.
Component | Peak Median Throughput (default feature) |
Peak Median Throughput (parallel feature) |
Impact of number of pieces on performance |
---|---|---|---|
Full RLNC Encoder | 48.36 GiB/s | 16.01 GiB/s | The number of pieces original data got split into has a minimal impact on the encoding speed. |
Full RLNC Recoder | 34.39 GiB/s | 9.58 GiB/s | Similar to the encoder, the recoder's performance remains largely consistent regardless of how many pieces the original data is split into. |
Full RLNC Decoder | 1.929 GiB/s | Doesn't yet implement a parallel decoding mode | As the number of pieces increases, the decoding time increases substantially, leading to a considerable drop in throughput. This indicates that decoding is the most computationally intensive part of the full RLNC scheme, and its performance is inversely proportional to the number of pieces. |
In summary, the full RLNC implementation demonstrates excellent encoding and recoding speeds, consistently achieving GiB/s throughputs with minimal sensitivity to the number of data pieces. The parallel
feature, leveraging Rust rayon
data-parallelism framework, also provides good performance for both encoding and recoding. Whether you want to use that feature, completely depends on your usecase. However, decoding remains a much slower operation, with its performance significantly diminishing as the data is split into a greater number of pieces, and currently does not implement a parallel decoding algorithm.
# Encoding with AVX512-powered SIMD vector x scalar multiplication
Timer precision: 22 ns
full_rlnc_encoder fastest โ slowest โ median โ mean โ samples โ iters
โโ encode โ โ โ โ โ
โ โโ 1.00 MB data split into 16 pieces 24.81 ยตs โ 86.67 ยตs โ 28.54 ยตs โ 30.06 ยตs โ 100 โ 100
โ โ 41.81 GiB/s โ 11.97 GiB/s โ 36.35 GiB/s โ 34.51 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ โ
โ โโ 1.00 MB data split into 32 pieces 27.74 ยตs โ 77.13 ยตs โ 29.69 ยตs โ 31.56 ยตs โ 100 โ 100
โ โ 36.29 GiB/s โ 13.05 GiB/s โ 33.92 GiB/s โ 31.9 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ โ
โ โโ 1.00 MB data split into 64 pieces 19.87 ยตs โ 38.22 ยตs โ 20.5 ยตs โ 22.56 ยตs โ 100 โ 100
โ โ 49.91 GiB/s โ 25.94 GiB/s โ 48.36 GiB/s โ 43.95 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ โ
โ โโ 1.00 MB data split into 128 pieces 20.26 ยตs โ 45.07 ยตs โ 25.4 ยตs โ 26.44 ยตs โ 100 โ 100
โ โ 48.58 GiB/s โ 21.84 GiB/s โ 38.75 GiB/s โ 37.22 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ โ
โ โโ 1.00 MB data split into 256 pieces 24.89 ยตs โ 41.05 ยตs โ 25.31 ยตs โ 26.52 ยตs โ 100 โ 100
โ โ 39.39 GiB/s โ 23.89 GiB/s โ 38.74 GiB/s โ 36.97 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ โ
โ โโ 16.00 MB data split into 16 pieces 775.1 ยตs โ 1.759 ms โ 827.3 ยตs โ 851.2 ยตs โ 100 โ 100
โ โ 21.41 GiB/s โ 9.432 GiB/s โ 20.06 GiB/s โ 19.5 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 16.00 MB data split into 32 pieces 611.6 ยตs โ 1.477 ms โ 661.9 ยตs โ 681.1 ยตs โ 100 โ 100
โ โ 26.34 GiB/s โ 10.9 GiB/s โ 24.34 GiB/s โ 23.65 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 16.00 MB data split into 64 pieces 625.1 ยตs โ 1.524 ms โ 665.5 ยตs โ 687.9 ยตs โ 100 โ 100
โ โ 25.38 GiB/s โ 10.4 GiB/s โ 23.84 GiB/s โ 23.06 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โโ 16.00 MB data split into 128 pieces 633.9 ยตs โ 1.388 ms โ 669.5 ยตs โ 686.8 ยตs โ 100 โ 100
โ โ 24.84 GiB/s โ 11.33 GiB/s โ 23.51 GiB/s โ 22.92 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โโ 16.00 MB data split into 256 pieces 629.4 ยตs โ 1.431 ms โ 659.2 ยตs โ 680.6 ยตs โ 100 โ 100
โ โ 24.92 GiB/s โ 10.95 GiB/s โ 23.79 GiB/s โ 23.04 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ โ
โ โโ 32.00 MB data split into 16 pieces 2.324 ms โ 4.714 ms โ 2.541 ms โ 2.583 ms โ 100 โ 100
โ โ 14.28 GiB/s โ 7.043 GiB/s โ 13.06 GiB/s โ 12.85 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 32.00 MB data split into 32 pieces 1.634 ms โ 3.483 ms โ 1.771 ms โ 1.821 ms โ 100 โ 100
โ โ 19.71 GiB/s โ 9.251 GiB/s โ 18.19 GiB/s โ 17.69 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 32.00 MB data split into 64 pieces 1.32 ms โ 3.311 ms โ 1.446 ms โ 1.502 ms โ 100 โ 100
โ โ 24.03 GiB/s โ 9.584 GiB/s โ 21.94 GiB/s โ 21.12 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 32.00 MB data split into 128 pieces 1.296 ms โ 3.297 ms โ 1.351 ms โ 1.41 ms โ 100 โ 100
โ โ 24.29 GiB/s โ 9.552 GiB/s โ 23.3 GiB/s โ 22.32 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โฐโ 32.00 MB data split into 256 pieces 1.301 ms โ 3.217 ms โ 1.375 ms โ 1.431 ms โ 100 โ 100
โ 24.11 GiB/s โ 9.751 GiB/s โ 22.81 GiB/s โ 21.92 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โฐโ encode_zero_alloc โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 23.6 ยตs โ 44.12 ยตs โ 25.18 ยตs โ 26.42 ยตs โ 100 โ 100
โ 43.95 GiB/s โ 23.51 GiB/s โ 41.2 GiB/s โ 39.26 GiB/s โ โ
โโ 1.00 MB data split into 32 pieces 27.18 ยตs โ 45.54 ยตs โ 29.34 ยตs โ 30.2 ยตs โ 100 โ 100
โ 37.05 GiB/s โ 22.11 GiB/s โ 34.32 GiB/s โ 33.34 GiB/s โ โ
โโ 1.00 MB data split into 64 pieces 19.74 ยตs โ 42.11 ยตs โ 20.98 ยตs โ 22.42 ยตs โ 100 โ 100
โ 50.22 GiB/s โ 23.55 GiB/s โ 47.25 GiB/s โ 44.23 GiB/s โ โ
โโ 1.00 MB data split into 128 pieces 19.89 ยตs โ 210.8 ยตs โ 20.45 ยตs โ 23.42 ยตs โ 100 โ 100
โ 49.47 GiB/s โ 4.668 GiB/s โ 48.11 GiB/s โ 42.01 GiB/s โ โ
โโ 1.00 MB data split into 256 pieces 20.25 ยตs โ 34.5 ยตs โ 20.64 ยตs โ 22.15 ยตs โ 100 โ 100
โ 48.42 GiB/s โ 28.42 GiB/s โ 47.51 GiB/s โ 44.27 GiB/s โ โ
โโ 16.00 MB data split into 16 pieces 741.3 ยตs โ 1.638 ms โ 806.9 ยตs โ 834.7 ยตs โ 100 โ 100
โ 22.39 GiB/s โ 10.12 GiB/s โ 20.57 GiB/s โ 19.88 GiB/s โ โ
โโ 16.00 MB data split into 32 pieces 625.9 ยตs โ 1.386 ms โ 666 ยตs โ 688.1 ยตs โ 100 โ 100
โ 25.74 GiB/s โ 11.61 GiB/s โ 24.19 GiB/s โ 23.41 GiB/s โ โ
โโ 16.00 MB data split into 64 pieces 601.1 ยตs โ 1.366 ms โ 632.2 ยตs โ 656.3 ยตs โ 100 โ 100
โ 26.39 GiB/s โ 11.61 GiB/s โ 25.1 GiB/s โ 24.17 GiB/s โ โ
โโ 16.00 MB data split into 128 pieces 603 ยตs โ 1.534 ms โ 630.8 ยตs โ 657.1 ยตs โ 100 โ 100
โ 26.11 GiB/s โ 10.25 GiB/s โ 24.96 GiB/s โ 23.96 GiB/s โ โ
โโ 16.00 MB data split into 256 pieces 599.2 ยตs โ 1.56 ms โ 631.1 ยตs โ 655.6 ยตs โ 100 โ 100
โ 26.17 GiB/s โ 10.05 GiB/s โ 24.85 GiB/s โ 23.92 GiB/s โ โ
โโ 32.00 MB data split into 16 pieces 2.268 ms โ 3.968 ms โ 2.562 ms โ 2.596 ms โ 100 โ 100
โ 14.63 GiB/s โ 8.367 GiB/s โ 12.95 GiB/s โ 12.78 GiB/s โ โ
โโ 32.00 MB data split into 32 pieces 1.593 ms โ 3.43 ms โ 1.771 ms โ 1.848 ms โ 100 โ 100
โ 20.22 GiB/s โ 9.395 GiB/s โ 18.18 GiB/s โ 17.43 GiB/s โ โ
โโ 32.00 MB data split into 64 pieces 1.284 ms โ 3.278 ms โ 1.364 ms โ 1.426 ms โ 100 โ 100
โ 24.71 GiB/s โ 9.68 GiB/s โ 23.26 GiB/s โ 22.25 GiB/s โ โ
โโ 32.00 MB data split into 128 pieces 1.259 ms โ 3.248 ms โ 1.338 ms โ 1.405 ms โ 100 โ 100
โ 25.01 GiB/s โ 9.696 GiB/s โ 23.53 GiB/s โ 22.41 GiB/s โ โ
โฐโ 32.00 MB data split into 256 pieces 1.243 ms โ 3.244 ms โ 1.327 ms โ 1.39 ms โ 100 โ 100
25.23 GiB/s โ 9.67 GiB/s โ 23.63 GiB/s โ 22.55 GiB/s โ โ
# ---------------------------------------------------------------------------------------------------------------------------
# Encoding with `rayon` data-parallelism, also using AVX512 intrinsics for faster vector x scalar multiplication
Timer precision: 22 ns
full_rlnc_encoder fastest โ slowest โ median โ mean โ samples โ iters
โโ encode โ โ โ โ โ
โ โโ 1.00 MB data split into 16 pieces 263.9 ยตs โ 850.2 ยตs โ 303.8 ยตs โ 312.9 ยตs โ 100 โ 100
โ โ 3.931 GiB/s โ 1.22 GiB/s โ 3.414 GiB/s โ 3.315 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 48 โ 1 โ 1.48 โ โ
โ โ 64.01 KiB โ 79.34 KiB โ 64.01 KiB โ 64.18 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 53 โ 1 โ 1.53 โ โ
โ โ 64.01 KiB โ 79.71 KiB โ 64.01 KiB โ 64.18 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 9 โ 2 โ 2.07 โ โ
โ โ 128 KiB โ 128.5 KiB โ 128 KiB โ 128 KiB โ โ
โ โโ 1.00 MB data split into 32 pieces 98.18 ยตs โ 346.5 ยตs โ 120.4 ยตs โ 125.2 ยตs โ 100 โ 100
โ โ 10.25 GiB/s โ 2.906 GiB/s โ 8.363 GiB/s โ 8.04 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.06 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.06 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 64 KiB โ 64 KiB โ 64 KiB โ 64 KiB โ โ
โ โโ 1.00 MB data split into 64 pieces 83.89 ยตs โ 125.9 ยตs โ 101.7 ยตs โ 102.5 ยตs โ 100 โ 100
โ โ 11.82 GiB/s โ 7.875 GiB/s โ 9.753 GiB/s โ 9.676 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.07 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.07 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 32 KiB โ 32 KiB โ 32 KiB โ 32 KiB โ โ
โ โโ 1.00 MB data split into 128 pieces 61.12 ยตs โ 98.06 ยตs โ 74.59 ยตs โ 75.06 ยตs โ 100 โ 100
โ โ 16.1 GiB/s โ 10.03 GiB/s โ 13.19 GiB/s โ 13.11 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.155 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.155 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 16 KiB โ 16 KiB โ 16 KiB โ 16 KiB โ โ
โ โโ 1.00 MB data split into 256 pieces 44.85 ยตs โ 103.5 ยตs โ 62.03 ยตs โ 62.54 ยตs โ 100 โ 100
โ โ 21.86 GiB/s โ 9.476 GiB/s โ 15.81 GiB/s โ 15.68 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.265 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.265 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ โ
โ โโ 16.00 MB data split into 16 pieces 3.699 ms โ 10.36 ms โ 4.724 ms โ 4.874 ms โ 100 โ 100
โ โ 4.487 GiB/s โ 1.602 GiB/s โ 3.514 GiB/s โ 3.405 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 16.00 MB data split into 32 pieces 2.681 ms โ 3.693 ms โ 3.114 ms โ 3.146 ms โ 100 โ 100
โ โ 6.008 GiB/s โ 4.362 GiB/s โ 5.173 GiB/s โ 5.12 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 16.00 MB data split into 64 pieces 1.576 ms โ 2.269 ms โ 1.899 ms โ 1.891 ms โ 100 โ 100
โ โ 10.06 GiB/s โ 6.993 GiB/s โ 8.355 GiB/s โ 8.388 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 16.00 MB data split into 128 pieces 1.04 ms โ 1.601 ms โ 1.274 ms โ 1.281 ms โ 100 โ 100
โ โ 15.13 GiB/s โ 9.831 GiB/s โ 12.35 GiB/s โ 12.28 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โโ 16.00 MB data split into 256 pieces 846.1 ยตs โ 1.505 ms โ 979.4 ยตs โ 1.003 ms โ 100 โ 100
โ โ 18.53 GiB/s โ 10.42 GiB/s โ 16.01 GiB/s โ 15.62 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.26 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.26 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ โโ 32.00 MB data split into 16 pieces 12.98 ms โ 16.63 ms โ 14.86 ms โ 14.86 ms โ 100 โ 100
โ โ 2.556 GiB/s โ 1.995 GiB/s โ 2.233 GiB/s โ 2.233 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โ โโ 32.00 MB data split into 32 pieces 7.963 ms โ 10.61 ms โ 8.959 ms โ 9.074 ms โ 100 โ 100
โ โ 4.046 GiB/s โ 3.035 GiB/s โ 3.596 GiB/s โ 3.551 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 32.00 MB data split into 64 pieces 4.078 ms โ 6.332 ms โ 4.837 ms โ 4.854 ms โ 100 โ 100
โ โ 7.782 GiB/s โ 5.012 GiB/s โ 6.56 GiB/s โ 6.537 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1.5 โ 1.01 โ โ
โ โ 512 KiB โ 512 KiB โ 512.8 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1.5 โ 1.01 โ โ
โ โ 512 KiB โ 512 KiB โ 512.8 KiB โ 512 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 32.00 MB data split into 128 pieces 2.335 ms โ 4.001 ms โ 2.736 ms โ 2.759 ms โ 100 โ 100
โ โ 13.48 GiB/s โ 7.87 GiB/s โ 11.5 GiB/s โ 11.41 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โฐโ 32.00 MB data split into 256 pieces 1.731 ms โ 3.204 ms โ 2.028 ms โ 2.049 ms โ 100 โ 100
โ 18.12 GiB/s โ 9.789 GiB/s โ 15.46 GiB/s โ 15.3 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โฐโ encode_zero_alloc โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 104.3 ยตs โ 296.1 ยตs โ 120.4 ยตs โ 125.2 ยตs โ 100 โ 100
โ 9.947 GiB/s โ 3.503 GiB/s โ 8.615 GiB/s โ 8.286 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โโ 1.00 MB data split into 32 pieces 94.05 ยตs โ 159.6 ยตs โ 110.1 ยตs โ 112.6 ยตs โ 100 โ 100
โ 10.7 GiB/s โ 6.308 GiB/s โ 9.14 GiB/s โ 8.937 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64 KiB โ 64 KiB โ 64 KiB โ 64 KiB โ โ
โโ 1.00 MB data split into 64 pieces 81.9 ยตs โ 139.7 ยตs โ 97.38 ยตs โ 97.93 ยตs โ 100 โ 100
โ 12.11 GiB/s โ 7.097 GiB/s โ 10.18 GiB/s โ 10.12 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 1 โ 0 โ 0.02 โ โ
โ 0 B โ 1.484 KiB โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 1 โ 0 โ 0.02 โ โ
โ 0 B โ 1.484 KiB โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 32 KiB โ 32 KiB โ 32 KiB โ 32 KiB โ โ
โโ 1.00 MB data split into 128 pieces 53.72 ยตs โ 97.23 ยตs โ 66.51 ยตs โ 68.19 ยตs โ 100 โ 100
โ 18.32 GiB/s โ 10.12 GiB/s โ 14.8 GiB/s โ 14.43 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 16 KiB โ 16 KiB โ 16 KiB โ 16 KiB โ โ
โโ 1.00 MB data split into 256 pieces 44.24 ยตs โ 215.4 ยตs โ 56.16 ยตs โ 59.38 ยตs โ 100 โ 100
โ 22.16 GiB/s โ 4.552 GiB/s โ 17.46 GiB/s โ 16.51 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ โ
โโ 16.00 MB data split into 16 pieces 3.802 ms โ 6.21 ms โ 4.4 ms โ 4.553 ms โ 100 โ 100
โ 4.365 GiB/s โ 2.673 GiB/s โ 3.772 GiB/s โ 3.645 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 16.00 MB data split into 32 pieces 2.482 ms โ 3.51 ms โ 2.944 ms โ 2.971 ms โ 100 โ 100
โ 6.49 GiB/s โ 4.589 GiB/s โ 5.471 GiB/s โ 5.422 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 16.00 MB data split into 64 pieces 1.55 ms โ 2.248 ms โ 1.821 ms โ 1.83 ms โ 100 โ 100
โ 10.23 GiB/s โ 7.057 GiB/s โ 8.71 GiB/s โ 8.671 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โโ 16.00 MB data split into 128 pieces 1.026 ms โ 1.719 ms โ 1.188 ms โ 1.195 ms โ 100 โ 100
โ 15.34 GiB/s โ 9.16 GiB/s โ 13.25 GiB/s โ 13.17 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โโ 16.00 MB data split into 256 pieces 823.5 ยตs โ 1.331 ms โ 954.4 ยตs โ 963.2 ยตs โ 100 โ 100
โ 19.04 GiB/s โ 11.77 GiB/s โ 16.43 GiB/s โ 16.28 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โโ 32.00 MB data split into 16 pieces 13.06 ms โ 16.69 ms โ 14.63 ms โ 14.59 ms โ 100 โ 100
โ 2.541 GiB/s โ 1.989 GiB/s โ 2.269 GiB/s โ 2.275 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โโ 32.00 MB data split into 32 pieces 7.74 ms โ 10.55 ms โ 8.918 ms โ 9.009 ms โ 100 โ 100
โ 4.163 GiB/s โ 3.053 GiB/s โ 3.613 GiB/s โ 3.576 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 32.00 MB data split into 64 pieces 4.352 ms โ 6.264 ms โ 4.988 ms โ 4.997 ms โ 100 โ 100
โ 7.292 GiB/s โ 5.066 GiB/s โ 6.362 GiB/s โ 6.351 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 32.00 MB data split into 128 pieces 2.311 ms โ 3.797 ms โ 2.814 ms โ 2.787 ms โ 100 โ 100
โ 13.62 GiB/s โ 8.292 GiB/s โ 11.19 GiB/s โ 11.29 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โฐโ 32.00 MB data split into 256 pieces 1.721 ms โ 3.313 ms โ 1.955 ms โ 1.998 ms โ 100 โ 100
18.22 GiB/s โ 9.467 GiB/s โ 16.04 GiB/s โ 15.69 GiB/s โ โ
max alloc: โ โ โ โ โ
0 โ 0 โ 0 โ 0.01 โ โ
0 B โ 0 B โ 0 B โ 15.2 B โ โ
alloc: โ โ โ โ โ
0 โ 0 โ 0 โ 0.01 โ โ
0 B โ 0 B โ 0 B โ 15.2 B โ โ
dealloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2 โ โ
256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
# Recoding with AVX512-powered SIMD vector x scalar multiplication
Timer precision: 22 ns
full_rlnc_recoder fastest โ slowest โ median โ mean โ samples โ iters
โโ recode โ โ โ โ โ
โ โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 17.03 ยตs โ 41.7 ยตs โ 19.63 ยตs โ 19.75 ยตs โ 100 โ 100
โ โ 32.24 GiB/s โ 13.17 GiB/s โ 27.98 GiB/s โ 27.81 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ โ
โ โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 14.83 ยตs โ 29.73 ยตs โ 15.81 ยตs โ 16.66 ยตs โ 100 โ 100
โ โ 34.99 GiB/s โ 17.46 GiB/s โ 32.83 GiB/s โ 31.15 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ โ
โ โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 12.02 ยตs โ 27.9 ยตs โ 14.69 ยตs โ 14.39 ยตs โ 100 โ 100
โ โ 42.03 GiB/s โ 18.11 GiB/s โ 34.39 GiB/s โ 35.12 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ โ
โ โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 18.93 ยตs โ 39.98 ยตs โ 21.47 ยตs โ 22.28 ยตs โ 100 โ 100
โ โ 26.6 GiB/s โ 12.59 GiB/s โ 23.45 GiB/s โ 22.6 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ โ
โ โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 46.86 ยตs โ 70.52 ยตs โ 52.92 ยตs โ 53.88 ยตs โ 100 โ 100
โ โ 11.15 GiB/s โ 7.415 GiB/s โ 9.88 GiB/s โ 9.706 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ โ
โ โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 506.5 ยตs โ 731.2 ยตs โ 614 ยตs โ 613.8 ยตs โ 100 โ 100
โ โ 17.35 GiB/s โ 12.01 GiB/s โ 14.31 GiB/s โ 14.31 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 378.7 ยตs โ 683.8 ยตs โ 467 ยตs โ 469.6 ยตs โ 100 โ 100
โ โ 21.91 GiB/s โ 12.13 GiB/s โ 17.77 GiB/s โ 17.67 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 438.9 ยตs โ 639.7 ยตs โ 499.6 ยตs โ 505.4 ยตs โ 100 โ 100
โ โ 18.35 GiB/s โ 12.59 GiB/s โ 16.12 GiB/s โ 15.94 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 415.5 ยตs โ 705.8 ยตs โ 498.9 ยตs โ 499 ยตs โ 100 โ 100
โ โ 19.11 GiB/s โ 11.25 GiB/s โ 15.91 GiB/s โ 15.91 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 447.5 ยตs โ 695.5 ยตs โ 528.4 ยตs โ 532.5 ยตs โ 100 โ 100
โ โ 17.66 GiB/s โ 11.36 GiB/s โ 14.95 GiB/s โ 14.84 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ โ
โ โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 1.6 ms โ 2.096 ms โ 1.892 ms โ 1.89 ms โ 100 โ 100
โ โ 10.98 GiB/s โ 8.382 GiB/s โ 9.29 GiB/s โ 9.296 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 1.343 ms โ 1.752 ms โ 1.602 ms โ 1.593 ms โ 100 โ 100
โ โ 12.35 GiB/s โ 9.473 GiB/s โ 10.36 GiB/s โ 10.41 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 1.164 ms โ 1.785 ms โ 1.499 ms โ 1.486 ms โ 100 โ 100
โ โ 13.83 GiB/s โ 9.028 GiB/s โ 10.74 GiB/s โ 10.84 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 1.382 ms โ 1.619 ms โ 1.539 ms โ 1.528 ms โ 100 โ 100
โ โ 11.48 GiB/s โ 9.801 GiB/s โ 10.31 GiB/s โ 10.38 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 1.359 ms โ 1.842 ms โ 1.572 ms โ 1.571 ms โ 100 โ 100
โ 11.6 GiB/s โ 8.565 GiB/s โ 10.03 GiB/s โ 10.03 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โฐโ recode_zero_alloc โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 14.55 ยตs โ 22.48 ยตs โ 16.41 ยตs โ 17.19 ยตs โ 100 โ 100
โ 37.76 GiB/s โ 24.43 GiB/s โ 33.46 GiB/s โ 31.95 GiB/s โ โ
โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 12.62 ยตs โ 26.71 ยตs โ 15.42 ยตs โ 15.59 ยตs โ 100 โ 100
โ 41.12 GiB/s โ 19.43 GiB/s โ 33.67 GiB/s โ 33.3 GiB/s โ โ
โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 14.14 ยตs โ 25.43 ยตs โ 14.7 ยตs โ 15.06 ยตs โ 100 โ 100
โ 35.74 GiB/s โ 19.87 GiB/s โ 34.37 GiB/s โ 33.54 GiB/s โ โ
โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 18.21 ยตs โ 36.5 ยตs โ 18.4 ยตs โ 19.43 ยตs โ 100 โ 100
โ 27.65 GiB/s โ 13.79 GiB/s โ 27.37 GiB/s โ 25.92 GiB/s โ โ
โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 43.54 ยตs โ 62.17 ยตs โ 44.52 ยตs โ 46.21 ยตs โ 100 โ 100
โ 12.01 GiB/s โ 8.411 GiB/s โ 11.74 GiB/s โ 11.31 GiB/s โ โ
โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 360.5 ยตs โ 641.8 ยตs โ 431.8 ยตs โ 433.6 ยตs โ 100 โ 100
โ 24.37 GiB/s โ 13.69 GiB/s โ 20.35 GiB/s โ 20.26 GiB/s โ โ
โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 288.4 ยตs โ 469.2 ยตs โ 344.2 ยตs โ 347.1 ยตs โ 100 โ 100
โ 28.77 GiB/s โ 17.69 GiB/s โ 24.11 GiB/s โ 23.91 GiB/s โ โ
โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 303.6 ยตs โ 422.1 ยตs โ 337.2 ยตs โ 343.3 ยตs โ 100 โ 100
โ 26.53 GiB/s โ 19.08 GiB/s โ 23.89 GiB/s โ 23.47 GiB/s โ โ
โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 310.3 ยตs โ 462.4 ยตs โ 337.5 ยตs โ 343.8 ยตs โ 100 โ 100
โ 25.58 GiB/s โ 17.17 GiB/s โ 23.52 GiB/s โ 23.09 GiB/s โ โ
โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 338 ยตs โ 454 ยตs โ 363.1 ยตs โ 365 ยตs โ 100 โ 100
โ 23.38 GiB/s โ 17.4 GiB/s โ 21.76 GiB/s โ 21.65 GiB/s โ โ
โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 1.477 ms โ 1.941 ms โ 1.785 ms โ 1.776 ms โ 100 โ 100
โ 11.89 GiB/s โ 9.054 GiB/s โ 9.843 GiB/s โ 9.896 GiB/s โ โ
โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 1.378 ms โ 1.73 ms โ 1.566 ms โ 1.559 ms โ 100 โ 100
โ 12.04 GiB/s โ 9.595 GiB/s โ 10.6 GiB/s โ 10.64 GiB/s โ โ
โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 1.267 ms โ 1.644 ms โ 1.481 ms โ 1.474 ms โ 100 โ 100
โ 12.71 GiB/s โ 9.798 GiB/s โ 10.88 GiB/s โ 10.92 GiB/s โ โ
โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 1.219 ms โ 1.604 ms โ 1.479 ms โ 1.466 ms โ 100 โ 100
โ 13.02 GiB/s โ 9.896 GiB/s โ 10.73 GiB/s โ 10.82 GiB/s โ โ
โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 1.242 ms โ 1.636 ms โ 1.465 ms โ 1.455 ms โ 100 โ 100
12.69 GiB/s โ 9.641 GiB/s โ 10.76 GiB/s โ 10.84 GiB/s โ โ
# ---------------------------------------------------------------------------------------------------------------------------
# Recoding with `rayon` data-parallelism, also using AVX512 intrinsics for faster vector x scalar multiplication
Timer precision: 25 ns
full_rlnc_recoder fastest โ slowest โ median โ mean โ samples โ iters
โโ recode โ โ โ โ โ
โ โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 75.03 ยตs โ 374.9 ยตs โ 99.79 ยตs โ 133.9 ยตs โ 100 โ 100
โ โ 7.323 GiB/s โ 1.465 GiB/s โ 5.505 GiB/s โ 4.101 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ 64.03 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ 64.03 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 73.06 ยตs โ 167.3 ยตs โ 82.36 ยตs โ 84.77 ยตs โ 100 โ 100
โ โ 7.107 GiB/s โ 3.102 GiB/s โ 6.304 GiB/s โ 6.125 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 2 โ 1 โ 1.02 โ โ
โ โ 32.03 KiB โ 33.51 KiB โ 32.03 KiB โ 32.06 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 2 โ 1 โ 1.02 โ โ
โ โ 32.03 KiB โ 33.51 KiB โ 32.03 KiB โ 32.06 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 64 KiB โ 64 KiB โ 64 KiB โ 64 KiB โ โ
โ โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 64.79 ยตs โ 94.51 ยตs โ 75.25 ยตs โ 76.4 ยตs โ 100 โ 100
โ โ 7.802 GiB/s โ 5.348 GiB/s โ 6.717 GiB/s โ 6.616 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.07 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.07 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 32 KiB โ 32 KiB โ 32 KiB โ 32 KiB โ โ
โ โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 66.55 ยตs โ 454.6 ยตs โ 73.57 ยตs โ 110.9 ยตs โ 100 โ 100
โ โ 7.568 GiB/s โ 1.107 GiB/s โ 6.846 GiB/s โ 4.541 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.155 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.155 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 16 KiB โ 16 KiB โ 16 KiB โ 16 KiB โ โ
โ โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 79.96 ยตs โ 432 ยตs โ 103.1 ยตs โ 183.1 ยตs โ 100 โ 100
โ โ 6.54 GiB/s โ 1.21 GiB/s โ 5.071 GiB/s โ 2.855 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.265 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.265 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ โ
โ โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 1.848 ms โ 2.755 ms โ 2.062 ms โ 2.094 ms โ 100 โ 100
โ โ 4.754 GiB/s โ 3.189 GiB/s โ 4.26 GiB/s โ 4.195 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 1.452 ms โ 2.173 ms โ 1.624 ms โ 1.653 ms โ 100 โ 100
โ โ 5.715 GiB/s โ 3.819 GiB/s โ 5.11 GiB/s โ 5.021 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 1.031 ms โ 1.481 ms โ 1.232 ms โ 1.247 ms โ 100 โ 100
โ โ 7.808 GiB/s โ 5.438 GiB/s โ 6.536 GiB/s โ 6.458 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 795.7 ยตs โ 1.205 ms โ 972 ยตs โ 976.8 ยตs โ 100 โ 100
โ โ 9.98 GiB/s โ 6.586 GiB/s โ 8.17 GiB/s โ 8.131 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 618.4 ยตs โ 1.013 ms โ 825 ยตs โ 818.1 ยตs โ 100 โ 100
โ โ 12.78 GiB/s โ 7.798 GiB/s โ 9.58 GiB/s โ 9.661 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.26 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.26 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 4.084 ms โ 5.697 ms โ 4.772 ms โ 4.791 ms โ 100 โ 100
โ โ 4.303 GiB/s โ 3.085 GiB/s โ 3.683 GiB/s โ 3.668 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โ โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 3.682 ms โ 4.882 ms โ 4.132 ms โ 4.134 ms โ 100 โ 100
โ โ 4.508 GiB/s โ 3.4 GiB/s โ 4.017 GiB/s โ 4.015 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 2.784 ms โ 3.752 ms โ 3.073 ms โ 3.134 ms โ 100 โ 100
โ โ 5.787 GiB/s โ 4.293 GiB/s โ 5.243 GiB/s โ 5.142 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 1.825 ms โ 2.803 ms โ 2.092 ms โ 2.118 ms โ 100 โ 100
โ โ 8.697 GiB/s โ 5.662 GiB/s โ 7.589 GiB/s โ 7.496 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 1.385 ms โ 1.934 ms โ 1.676 ms โ 1.676 ms โ 100 โ 100
โ 11.38 GiB/s โ 8.154 GiB/s โ 9.413 GiB/s โ 9.41 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โฐโ recode_zero_alloc โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 77.78 ยตs โ 470.6 ยตs โ 99.06 ยตs โ 170.5 ยตs โ 100 โ 100
โ 7.063 GiB/s โ 1.167 GiB/s โ 5.546 GiB/s โ 3.222 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 66.26 ยตs โ 366 ยตs โ 81.98 ยตs โ 91.98 ยตs โ 100 โ 100
โ 7.837 GiB/s โ 1.418 GiB/s โ 6.334 GiB/s โ 5.645 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64 KiB โ 64 KiB โ 64 KiB โ 64 KiB โ โ
โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 59.85 ยตs โ 96.22 ยตs โ 73.08 ยตs โ 73.55 ยตs โ 100 โ 100
โ 8.445 GiB/s โ 5.253 GiB/s โ 6.917 GiB/s โ 6.872 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 32 KiB โ 32 KiB โ 32 KiB โ 32 KiB โ โ
โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 67.66 ยตs โ 365.1 ยตs โ 74.93 ยตs โ 97.23 ยตs โ 100 โ 100
โ 7.444 GiB/s โ 1.379 GiB/s โ 6.721 GiB/s โ 5.18 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 16 KiB โ 16 KiB โ 16 KiB โ 16 KiB โ โ
โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 75.64 ยตs โ 416.1 ยตs โ 86.26 ยตs โ 109.4 ยตs โ 100 โ 100
โ 6.913 GiB/s โ 1.256 GiB/s โ 6.062 GiB/s โ 4.78 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ โ
โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 1.802 ms โ 2.639 ms โ 2.142 ms โ 2.176 ms โ 100 โ 100
โ 4.876 GiB/s โ 3.33 GiB/s โ 4.101 GiB/s โ 4.037 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 1.396 ms โ 2.156 ms โ 1.771 ms โ 1.757 ms โ 100 โ 100
โ 5.942 GiB/s โ 3.849 GiB/s โ 4.685 GiB/s โ 4.723 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 1.042 ms โ 1.903 ms โ 1.318 ms โ 1.339 ms โ 100 โ 100
โ 7.73 GiB/s โ 4.232 GiB/s โ 6.113 GiB/s โ 6.017 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 747.3 ยตs โ 1.157 ms โ 956.6 ยตs โ 948.5 ยตs โ 100 โ 100
โ 10.62 GiB/s โ 6.859 GiB/s โ 8.301 GiB/s โ 8.373 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 576.1 ยตs โ 1.22 ms โ 739 ยตs โ 773.1 ยตs โ 100 โ 100
โ 13.71 GiB/s โ 6.477 GiB/s โ 10.69 GiB/s โ 10.22 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 4.223 ms โ 5.42 ms โ 4.722 ms โ 4.759 ms โ 100 โ 100
โ 4.161 GiB/s โ 3.243 GiB/s โ 3.722 GiB/s โ 3.693 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 3.704 ms โ 4.893 ms โ 4.176 ms โ 4.159 ms โ 100 โ 100
โ 4.481 GiB/s โ 3.392 GiB/s โ 3.974 GiB/s โ 3.991 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 2.725 ms โ 3.944 ms โ 3.206 ms โ 3.22 ms โ 100 โ 100
โ 5.912 GiB/s โ 4.085 GiB/s โ 5.025 GiB/s โ 5.004 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 0 โ 0 โ 0.02 โ โ
โ 1.484 KiB โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 1 โ 0 โ 0 โ 0.02 โ โ
โ 1.484 KiB โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 1.968 ms โ 3.462 ms โ 2.192 ms โ 2.245 ms โ 100 โ 100
โ 8.067 GiB/s โ 4.584 GiB/s โ 7.24 GiB/s โ 7.071 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 1.345 ms โ 2.041 ms โ 1.675 ms โ 1.659 ms โ 100 โ 100
11.72 GiB/s โ 7.729 GiB/s โ 9.415 GiB/s โ 9.506 GiB/s โ โ
max alloc: โ โ โ โ โ
0 โ 0 โ 0 โ 0.02 โ โ
0 B โ 0 B โ 0 B โ 30.4 B โ โ
alloc: โ โ โ โ โ
0 โ 0 โ 0 โ 0.02 โ โ
0 B โ 0 B โ 0 B โ 30.4 B โ โ
dealloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2 โ โ
256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
# Decoding with AVX512-powered SIMD vector x scalar multiplication
Timer precision: 22 ns
full_rlnc_decoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ decode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 480.7 ยตs โ 957.7 ยตs โ 506.3 ยตs โ 522.6 ยตs โ 100 โ 100
โ 2.031 GiB/s โ 1.019 GiB/s โ 1.929 GiB/s โ 1.869 GiB/s โ โ
โโ 1.00 MB data split into 32 pieces 950.4 ยตs โ 1.437 ms โ 990.3 ยตs โ 1.013 ms โ 100 โ 100
โ 1.028 GiB/s โ 696.5 MiB/s โ 1010 MiB/s โ 987.9 MiB/s โ โ
โโ 1.00 MB data split into 64 pieces 1.735 ms โ 2.06 ms โ 1.819 ms โ 1.84 ms โ 100 โ 100
โ 578.5 MiB/s โ 487.2 MiB/s โ 551.7 MiB/s โ 545.6 MiB/s โ โ
โโ 1.00 MB data split into 128 pieces 4.353 ms โ 4.995 ms โ 4.577 ms โ 4.589 ms โ 100 โ 100
โ 233.3 MiB/s โ 203.3 MiB/s โ 221.9 MiB/s โ 221.2 MiB/s โ โ
โโ 1.00 MB data split into 256 pieces 14.71 ms โ 16.09 ms โ 15.13 ms โ 15.15 ms โ 100 โ 100
โ 72.21 MiB/s โ 66.04 MiB/s โ 70.24 MiB/s โ 70.1 MiB/s โ โ
โโ 16.00 MB data split into 16 pieces 14.58 ms โ 21.38 ms โ 14.89 ms โ 15.03 ms โ 100 โ 100
โ 1.071 GiB/s โ 748.2 MiB/s โ 1.048 GiB/s โ 1.039 GiB/s โ โ
โโ 16.00 MB data split into 32 pieces 22.66 ms โ 24.9 ms โ 23.69 ms โ 23.68 ms โ 100 โ 100
โ 705.9 MiB/s โ 642.4 MiB/s โ 675.3 MiB/s โ 675.6 MiB/s โ โ
โโ 16.00 MB data split into 64 pieces 44.49 ms โ 48.41 ms โ 45.44 ms โ 45.52 ms โ 100 โ 100
โ 359.6 MiB/s โ 330.5 MiB/s โ 352.1 MiB/s โ 351.5 MiB/s โ โ
โโ 16.00 MB data split into 128 pieces 88.44 ms โ 92.85 ms โ 89.9 ms โ 89.91 ms โ 100 โ 100
โ 181 MiB/s โ 172.4 MiB/s โ 178.1 MiB/s โ 178.1 MiB/s โ โ
โโ 16.00 MB data split into 256 pieces 183.2 ms โ 188.8 ms โ 185.6 ms โ 185.6 ms โ 100 โ 100
โ 87.64 MiB/s โ 85.03 MiB/s โ 86.5 MiB/s โ 86.5 MiB/s โ โ
โโ 32.00 MB data split into 16 pieces 50.83 ms โ 56.01 ms โ 52.46 ms โ 52.61 ms โ 100 โ 100
โ 629.5 MiB/s โ 571.3 MiB/s โ 609.9 MiB/s โ 608.1 MiB/s โ โ
โโ 32.00 MB data split into 32 pieces 68.57 ms โ 80.56 ms โ 70.51 ms โ 71.01 ms โ 100 โ 100
โ 466.6 MiB/s โ 397.2 MiB/s โ 453.8 MiB/s โ 450.6 MiB/s โ โ
โโ 32.00 MB data split into 64 pieces 103.8 ms โ 110.1 ms โ 106.8 ms โ 106.9 ms โ 100 โ 100
โ 308 MiB/s โ 290.5 MiB/s โ 299.4 MiB/s โ 299.1 MiB/s โ โ
โโ 32.00 MB data split into 128 pieces 191.8 ms โ 199.8 ms โ 195 ms โ 195.1 ms โ 100 โ 100
โ 166.8 MiB/s โ 160.2 MiB/s โ 164.1 MiB/s โ 164 MiB/s โ โ
โฐโ 32.00 MB data split into 256 pieces 373 ms โ 390.6 ms โ 378.5 ms โ 378.7 ms โ 100 โ 100
85.94 MiB/s โ 82.08 MiB/s โ 84.69 MiB/s โ 84.65 MiB/s โ โ
m7a.large
with AMD EPYC 9R14Running benchmarks on Linux 6.14.0-1011-aws x86_64
, compiled with rustc 1.89.0 (29483883e 2025-08-04)
.
Component | Peak Median Throughput (default feature) |
Peak Median Throughput (parallel feature) |
Impact of number of pieces on performance |
---|---|---|---|
Full RLNC Encoder | 52.42 GiB/s | 25.22 GiB/s | The number of pieces original data got split into has a minimal impact on the encoding speed. |
Full RLNC Recoder | 45.15 GiB/s | 8.902 GiB/s | Similar to the encoder, the recoder's performance remains largely consistent regardless of how many pieces the original data is split into. |
Full RLNC Decoder | 2.19 GiB/s | Doesn't yet implement a parallel decoding mode | As the number of pieces increases, the decoding time increases substantially, leading to a considerable drop in throughput. This indicates that decoding is the most computationally intensive part of the full RLNC scheme, and its performance is inversely proportional to the number of pieces. |
In summary, the full RLNC implementation demonstrates excellent encoding and recoding speeds, consistently achieving GiB/s throughputs with minimal sensitivity to the number of data pieces. The parallel
feature, leveraging Rust rayon
data-parallelism framework, also provides good performance for both encoding and recoding. Whether you want to use that feature, completely depends on your usecase. However, decoding remains a much slower operation, with its performance significantly diminishing as the data is split into a greater number of pieces, and currently does not implement a parallel decoding algorithm.
# Encoding with AVX512-powered SIMD vector x scalar multiplication
Timer precision: 20 ns
full_rlnc_encoder fastest โ slowest โ median โ mean โ samples โ iters
โโ encode โ โ โ โ โ
โ โโ 1.00 MB data split into 16 pieces 21.24 ยตs โ 78.72 ยตs โ 23.1 ยตs โ 24.78 ยตs โ 100 โ 100
โ โ 48.85 GiB/s โ 13.17 GiB/s โ 44.9 GiB/s โ 41.86 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ โ
โ โโ 1.00 MB data split into 32 pieces 23.04 ยตs โ 47.12 ยตs โ 25.13 ยตs โ 26.58 ยตs โ 100 โ 100
โ โ 43.69 GiB/s โ 21.37 GiB/s โ 40.06 GiB/s โ 37.87 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ โ
โ โโ 1.00 MB data split into 64 pieces 18.17 ยตs โ 30.15 ยตs โ 18.91 ยตs โ 19.46 ยตs โ 100 โ 100
โ โ 54.56 GiB/s โ 32.89 GiB/s โ 52.42 GiB/s โ 50.94 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ โ
โ โโ 1.00 MB data split into 128 pieces 17.35 ยตs โ 29.71 ยตs โ 20.15 ยตs โ 20.37 ยตs โ 100 โ 100
โ โ 56.7 GiB/s โ 33.12 GiB/s โ 48.83 GiB/s โ 48.31 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ โ
โ โโ 1.00 MB data split into 256 pieces 17.42 ยตs โ 30.84 ยตs โ 20.09 ยตs โ 19.63 ยตs โ 100 โ 100
โ โ 56.27 GiB/s โ 31.8 GiB/s โ 48.82 GiB/s โ 49.96 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ โ
โ โโ 16.00 MB data split into 16 pieces 424.6 ยตs โ 707.1 ยตs โ 464.6 ยตs โ 467.2 ยตs โ 100 โ 100
โ โ 39.09 GiB/s โ 23.47 GiB/s โ 35.73 GiB/s โ 35.53 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 16.00 MB data split into 32 pieces 384.3 ยตs โ 687.4 ยตs โ 411.7 ยตs โ 420.4 ยตs โ 100 โ 100
โ โ 41.92 GiB/s โ 23.43 GiB/s โ 39.13 GiB/s โ 38.32 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 16.00 MB data split into 64 pieces 396.7 ยตs โ 648.1 ยตs โ 434.2 ยตs โ 437.9 ยตs โ 100 โ 100
โ โ 40 GiB/s โ 24.48 GiB/s โ 36.54 GiB/s โ 36.23 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โโ 16.00 MB data split into 128 pieces 394 ยตs โ 650.5 ยตs โ 440.1 ยตs โ 481.3 ยตs โ 100 โ 100
โ โ 39.96 GiB/s โ 24.2 GiB/s โ 35.77 GiB/s โ 32.71 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โโ 16.00 MB data split into 256 pieces 393.3 ยตs โ 732.7 ยตs โ 436 ยตs โ 439 ยตs โ 100 โ 100
โ โ 39.88 GiB/s โ 21.4 GiB/s โ 35.97 GiB/s โ 35.72 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ โ
โ โโ 32.00 MB data split into 16 pieces 1.206 ms โ 2.327 ms โ 1.337 ms โ 1.343 ms โ 100 โ 100
โ โ 27.51 GiB/s โ 14.26 GiB/s โ 24.82 GiB/s โ 24.71 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 32.00 MB data split into 32 pieces 1.176 ms โ 1.351 ms โ 1.253 ms โ 1.256 ms โ 100 โ 100
โ โ 27.38 GiB/s โ 23.85 GiB/s โ 25.71 GiB/s โ 25.64 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 32.00 MB data split into 64 pieces 1.364 ms โ 1.754 ms โ 1.541 ms โ 1.537 ms โ 100 โ 100
โ โ 23.25 GiB/s โ 18.08 GiB/s โ 20.58 GiB/s โ 20.64 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 32.00 MB data split into 128 pieces 1.428 ms โ 1.891 ms โ 1.513 ms โ 1.544 ms โ 100 โ 100
โ โ 22.04 GiB/s โ 16.65 GiB/s โ 20.8 GiB/s โ 20.39 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โฐโ 32.00 MB data split into 256 pieces 1.483 ms โ 1.845 ms โ 1.582 ms โ 1.605 ms โ 100 โ 100
โ 21.14 GiB/s โ 17 GiB/s โ 19.82 GiB/s โ 19.54 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โฐโ encode_zero_alloc โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 20.69 ยตs โ 42.29 ยตs โ 22.3 ยตs โ 23.28 ยตs โ 100 โ 100
โ 50.12 GiB/s โ 24.53 GiB/s โ 46.51 GiB/s โ 44.56 GiB/s โ โ
โโ 1.00 MB data split into 32 pieces 21.49 ยตs โ 41.1 ยตs โ 22.38 ยตs โ 24.16 ยตs โ 100 โ 100
โ 46.84 GiB/s โ 24.49 GiB/s โ 44.98 GiB/s โ 41.68 GiB/s โ โ
โโ 1.00 MB data split into 64 pieces 17.79 ยตs โ 37.24 ยตs โ 19.58 ยตs โ 21.14 ยตs โ 100 โ 100
โ 55.72 GiB/s โ 26.62 GiB/s โ 50.63 GiB/s โ 46.9 GiB/s โ โ
โโ 1.00 MB data split into 128 pieces 16.87 ยตs โ 32.84 ยตs โ 17.43 ยตs โ 19.55 ยตs โ 100 โ 100
โ 58.32 GiB/s โ 29.96 GiB/s โ 56.44 GiB/s โ 50.33 GiB/s โ โ
โโ 1.00 MB data split into 256 pieces 17.06 ยตs โ 31.73 ยตs โ 17.47 ยตs โ 19 ยตs โ 100 โ 100
โ 57.46 GiB/s โ 30.91 GiB/s โ 56.11 GiB/s โ 51.61 GiB/s โ โ
โโ 16.00 MB data split into 16 pieces 409.2 ยตs โ 581.7 ยตs โ 456 ยตs โ 461.1 ยตs โ 100 โ 100
โ 40.56 GiB/s โ 28.53 GiB/s โ 36.4 GiB/s โ 36 GiB/s โ โ
โโ 16.00 MB data split into 32 pieces 389.4 ยตs โ 581.4 ยตs โ 414.4 ยตs โ 419 ยตs โ 100 โ 100
โ 41.37 GiB/s โ 27.71 GiB/s โ 38.88 GiB/s โ 38.45 GiB/s โ โ
โโ 16.00 MB data split into 64 pieces 390.4 ยตs โ 636.5 ยตs โ 408.1 ยตs โ 414.4 ยตs โ 100 โ 100
โ 40.64 GiB/s โ 24.93 GiB/s โ 38.87 GiB/s โ 38.29 GiB/s โ โ
โโ 16.00 MB data split into 128 pieces 388.3 ยตs โ 628.6 ยตs โ 405.3 ยตs โ 416.9 ยตs โ 100 โ 100
โ 40.54 GiB/s โ 25.05 GiB/s โ 38.84 GiB/s โ 37.76 GiB/s โ โ
โโ 16.00 MB data split into 256 pieces 388 ยตs โ 763.2 ยตs โ 403.7 ยตs โ 415.7 ยตs โ 100 โ 100
โ 40.41 GiB/s โ 20.55 GiB/s โ 38.85 GiB/s โ 37.73 GiB/s โ โ
โโ 32.00 MB data split into 16 pieces 1.19 ms โ 1.409 ms โ 1.268 ms โ 1.274 ms โ 100 โ 100
โ 27.88 GiB/s โ 23.56 GiB/s โ 26.17 GiB/s โ 26.04 GiB/s โ โ
โโ 32.00 MB data split into 32 pieces 1.125 ms โ 1.379 ms โ 1.192 ms โ 1.201 ms โ 100 โ 100
โ 28.63 GiB/s โ 23.35 GiB/s โ 27.01 GiB/s โ 26.81 GiB/s โ โ
โโ 32.00 MB data split into 64 pieces 1.287 ms โ 1.622 ms โ 1.431 ms โ 1.438 ms โ 100 โ 100
โ 24.65 GiB/s โ 19.55 GiB/s โ 22.17 GiB/s โ 22.05 GiB/s โ โ
โโ 32.00 MB data split into 128 pieces 1.39 ms โ 1.806 ms โ 1.456 ms โ 1.486 ms โ 100 โ 100
โ 22.64 GiB/s โ 17.43 GiB/s โ 21.62 GiB/s โ 21.19 GiB/s โ โ
โฐโ 32.00 MB data split into 256 pieces 1.418 ms โ 1.776 ms โ 1.507 ms โ 1.519 ms โ 100 โ 100
22.12 GiB/s โ 17.65 GiB/s โ 20.81 GiB/s โ 20.64 GiB/s โ โ
# ---------------------------------------------------------------------------------------------------------------------------
# Encoding with `rayon` data-parallelism, also using AVX512 intrinsics for faster vector x scalar multiplication
Timer precision: 20 ns
full_rlnc_encoder fastest โ slowest โ median โ mean โ samples โ iters
โโ encode โ โ โ โ โ
โ โโ 1.00 MB data split into 16 pieces 396 ยตs โ 706.3 ยตs โ 410.2 ยตs โ 413.3 ยตs โ 100 โ 100
โ โ 2.62 GiB/s โ 1.469 GiB/s โ 2.529 GiB/s โ 2.51 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 28 โ 1 โ 1.28 โ โ
โ โ 64.01 KiB โ 72.89 KiB โ 64.01 KiB โ 64.12 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 33 โ 1 โ 1.33 โ โ
โ โ 64.01 KiB โ 73.26 KiB โ 64.01 KiB โ 64.12 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 9 โ 2 โ 2.07 โ โ
โ โ 128 KiB โ 128.5 KiB โ 128 KiB โ 128 KiB โ โ
โ โโ 1.00 MB data split into 32 pieces 55.26 ยตs โ 167.7 ยตs โ 57.96 ยตs โ 59.69 ยตs โ 100 โ 100
โ โ 18.22 GiB/s โ 6.004 GiB/s โ 17.37 GiB/s โ 16.87 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.06 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.06 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 64 KiB โ 64 KiB โ 64 KiB โ 64 KiB โ โ
โ โโ 1.00 MB data split into 64 pieces 43.04 ยตs โ 89.11 ยตs โ 45.5 ยตs โ 46.35 ยตs โ 100 โ 100
โ โ 23.04 GiB/s โ 11.13 GiB/s โ 21.79 GiB/s โ 21.39 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.07 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.07 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 32 KiB โ 32 KiB โ 32 KiB โ 32 KiB โ โ
โ โโ 1.00 MB data split into 128 pieces 36.62 ยตs โ 108.9 ยตs โ 39.19 ยตs โ 48.92 ยตs โ 100 โ 100
โ โ 26.87 GiB/s โ 9.039 GiB/s โ 25.11 GiB/s โ 20.11 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.155 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.155 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 16 KiB โ 16 KiB โ 16 KiB โ 16 KiB โ โ
โ โโ 1.00 MB data split into 256 pieces 35.79 ยตs โ 99.82 ยตs โ 38.87 ยตs โ 49.29 ยตs โ 100 โ 100
โ โ 27.39 GiB/s โ 9.826 GiB/s โ 25.22 GiB/s โ 19.89 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.265 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.265 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ โ
โ โโ 16.00 MB data split into 16 pieces 3.455 ms โ 7.688 ms โ 3.596 ms โ 3.788 ms โ 100 โ 100
โ โ 4.804 GiB/s โ 2.159 GiB/s โ 4.615 GiB/s โ 4.381 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 16.00 MB data split into 32 pieces 858.9 ยตs โ 2.324 ms โ 883.6 ยตs โ 1.072 ms โ 100 โ 100
โ โ 18.75 GiB/s โ 6.93 GiB/s โ 18.23 GiB/s โ 15.01 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 16.00 MB data split into 64 pieces 652.2 ยตs โ 1.201 ms โ 672.6 ยตs โ 696.4 ยตs โ 100 โ 100
โ โ 24.32 GiB/s โ 13.2 GiB/s โ 23.59 GiB/s โ 22.78 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 16.00 MB data split into 128 pieces 562.3 ยตs โ 1.328 ms โ 576.3 ยตs โ 588.4 ยตs โ 100 โ 100
โ โ 28 GiB/s โ 11.85 GiB/s โ 27.32 GiB/s โ 26.76 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โโ 16.00 MB data split into 256 pieces 523.8 ยตs โ 702.2 ยตs โ 535.7 ยตs โ 537.1 ยตs โ 100 โ 100
โ โ 29.94 GiB/s โ 22.33 GiB/s โ 29.28 GiB/s โ 29.2 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.26 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.26 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ โโ 32.00 MB data split into 16 pieces 15.57 ms โ 16.98 ms โ 16.03 ms โ 16.07 ms โ 100 โ 100
โ โ 2.131 GiB/s โ 1.955 GiB/s โ 2.07 GiB/s โ 2.064 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 2 โ 1 โ 1 โ 1.02 โ โ
โ โ 2.001 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 2 โ 1 โ 1 โ 1.02 โ โ
โ โ 2.001 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โ โโ 32.00 MB data split into 32 pieces 4.267 ms โ 5.788 ms โ 4.397 ms โ 4.489 ms โ 100 โ 100
โ โ 7.552 GiB/s โ 5.567 GiB/s โ 7.328 GiB/s โ 7.177 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 32.00 MB data split into 64 pieces 1.639 ms โ 2.597 ms โ 1.663 ms โ 1.676 ms โ 100 โ 100
โ โ 19.36 GiB/s โ 12.22 GiB/s โ 19.08 GiB/s โ 18.92 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1.5 โ 1.01 โ โ
โ โ 512 KiB โ 512 KiB โ 512.8 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1.5 โ 1.01 โ โ
โ โ 512 KiB โ 512 KiB โ 512.8 KiB โ 512 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 32.00 MB data split into 128 pieces 1.483 ms โ 2.117 ms โ 1.514 ms โ 1.529 ms โ 100 โ 100
โ โ 21.22 GiB/s โ 14.87 GiB/s โ 20.78 GiB/s โ 20.59 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โฐโ 32.00 MB data split into 256 pieces 1.373 ms โ 1.762 ms โ 1.408 ms โ 1.432 ms โ 100 โ 100
โ 22.83 GiB/s โ 17.8 GiB/s โ 22.26 GiB/s โ 21.9 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โฐโ encode_zero_alloc โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 71.34 ยตs โ 103.2 ยตs โ 74.32 ยตs โ 75.09 ยตs โ 100 โ 100
โ 14.54 GiB/s โ 10.04 GiB/s โ 13.96 GiB/s โ 13.81 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โโ 1.00 MB data split into 32 pieces 54.67 ยตs โ 74.2 ยตs โ 57.68 ยตs โ 57.97 ยตs โ 100 โ 100
โ 18.41 GiB/s โ 13.57 GiB/s โ 17.46 GiB/s โ 17.37 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64 KiB โ 64 KiB โ 64 KiB โ 64 KiB โ โ
โโ 1.00 MB data split into 64 pieces 42.69 ยตs โ 128.9 ยตs โ 45.47 ยตs โ 52.06 ยตs โ 100 โ 100
โ 23.23 GiB/s โ 7.694 GiB/s โ 21.81 GiB/s โ 19.05 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 32 KiB โ 32 KiB โ 32 KiB โ 32 KiB โ โ
โโ 1.00 MB data split into 128 pieces 36.27 ยตs โ 88.37 ยตs โ 39.29 ยตs โ 49.21 ยตs โ 100 โ 100
โ 27.13 GiB/s โ 11.13 GiB/s โ 25.05 GiB/s โ 20 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 16 KiB โ 16 KiB โ 16 KiB โ 16 KiB โ โ
โโ 1.00 MB data split into 256 pieces 36.09 ยตs โ 56.51 ยตs โ 38.65 ยตs โ 38.6 ยตs โ 100 โ 100
โ 27.17 GiB/s โ 17.35 GiB/s โ 25.37 GiB/s โ 25.4 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ โ
โโ 16.00 MB data split into 16 pieces 3.35 ms โ 5.831 ms โ 3.581 ms โ 3.689 ms โ 100 โ 100
โ 4.954 GiB/s โ 2.846 GiB/s โ 4.634 GiB/s โ 4.499 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 16.00 MB data split into 32 pieces 846.4 ยตs โ 2.324 ms โ 865.5 ยตs โ 950.4 ยตs โ 100 โ 100
โ 19.03 GiB/s โ 6.932 GiB/s โ 18.61 GiB/s โ 16.95 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 16.00 MB data split into 64 pieces 644.9 ยตs โ 1.293 ms โ 660.7 ยตs โ 673.4 ยตs โ 100 โ 100
โ 24.6 GiB/s โ 12.26 GiB/s โ 24.01 GiB/s โ 23.56 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โโ 16.00 MB data split into 128 pieces 560.8 ยตs โ 1.321 ms โ 575.2 ยตs โ 615.1 ยตs โ 100 โ 100
โ 28.07 GiB/s โ 11.91 GiB/s โ 27.37 GiB/s โ 25.59 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โโ 16.00 MB data split into 256 pieces 523.9 ยตs โ 1.221 ms โ 534.9 ยตs โ 555.2 ยตs โ 100 โ 100
โ 29.94 GiB/s โ 12.84 GiB/s โ 29.32 GiB/s โ 28.24 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โโ 32.00 MB data split into 16 pieces 15.48 ms โ 18.52 ms โ 15.91 ms โ 15.98 ms โ 100 โ 100
โ 2.144 GiB/s โ 1.792 GiB/s โ 2.086 GiB/s โ 2.077 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โโ 32.00 MB data split into 32 pieces 4.269 ms โ 6.73 ms โ 4.347 ms โ 4.39 ms โ 100 โ 100
โ 7.548 GiB/s โ 4.788 GiB/s โ 7.413 GiB/s โ 7.339 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 1 โ 0 โ 0.01 โ โ
โ 0 B โ 1.484 KiB โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 1 โ 0 โ 0.01 โ โ
โ 0 B โ 1.484 KiB โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 32.00 MB data split into 64 pieces 1.638 ms โ 3.458 ms โ 1.667 ms โ 1.721 ms โ 100 โ 100
โ 19.36 GiB/s โ 9.177 GiB/s โ 19.03 GiB/s โ 18.44 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 32.00 MB data split into 128 pieces 1.467 ms โ 1.798 ms โ 1.505 ms โ 1.515 ms โ 100 โ 100
โ 21.46 GiB/s โ 17.51 GiB/s โ 20.92 GiB/s โ 20.78 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โฐโ 32.00 MB data split into 256 pieces 1.385 ms โ 1.963 ms โ 1.423 ms โ 1.436 ms โ 100 โ 100
22.64 GiB/s โ 15.98 GiB/s โ 22.04 GiB/s โ 21.83 GiB/s โ โ
max alloc: โ โ โ โ โ
0 โ 0 โ 0 โ 0.01 โ โ
0 B โ 0 B โ 0 B โ 15.2 B โ โ
alloc: โ โ โ โ โ
0 โ 0 โ 0 โ 0.01 โ โ
0 B โ 0 B โ 0 B โ 15.2 B โ โ
dealloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2 โ โ
256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
# Recoding with AVX512-powered SIMD vector x scalar multiplication
Timer precision: 20 ns
full_rlnc_recoder fastest โ slowest โ median โ mean โ samples โ iters
โโ recode โ โ โ โ โ
โ โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 12.13 ยตs โ 27.81 ยตs โ 13.95 ยตs โ 14.18 ยตs โ 100 โ 100
โ โ 45.26 GiB/s โ 19.75 GiB/s โ 39.36 GiB/s โ 38.74 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ 64.01 KiB โ โ
โ โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 10.78 ยตs โ 22.56 ยตs โ 11.49 ยตs โ 11.77 ยตs โ 100 โ 100
โ โ 48.13 GiB/s โ 23 GiB/s โ 45.15 GiB/s โ 44.11 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ โ
โ โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 10.97 ยตs โ 21.87 ยตs โ 11.24 ยตs โ 11.35 ยตs โ 100 โ 100
โ โ 46.04 GiB/s โ 23.1 GiB/s โ 44.97 GiB/s โ 44.51 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ โ
โ โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 16.88 ยตs โ 31.08 ยตs โ 18.42 ยตs โ 18.62 ยตs โ 100 โ 100
โ โ 29.82 GiB/s โ 16.2 GiB/s โ 27.33 GiB/s โ 27.04 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ โ
โ โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 47.64 ยตs โ 63.27 ยตs โ 48.8 ยตs โ 49.92 ยตs โ 100 โ 100
โ โ 10.97 GiB/s โ 8.265 GiB/s โ 10.71 GiB/s โ 10.47 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ โ
โ โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 245 ยตs โ 382.5 ยตs โ 288.5 ยตs โ 301.8 ยตs โ 100 โ 100
โ โ 35.86 GiB/s โ 22.97 GiB/s โ 30.45 GiB/s โ 29.11 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 231.2 ยตs โ 402.8 ยตs โ 273.9 ยตs โ 282.9 ยตs โ 100 โ 100
โ โ 35.89 GiB/s โ 20.6 GiB/s โ 30.3 GiB/s โ 29.33 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 245.1 ยตs โ 435.9 ยตs โ 277.7 ยตs โ 293.1 ยตs โ 100 โ 100
โ โ 32.87 GiB/s โ 18.48 GiB/s โ 29.01 GiB/s โ 27.49 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 235.7 ยตs โ 449.9 ยตs โ 274.1 ยตs โ 293.6 ยตs โ 100 โ 100
โ โ 33.69 GiB/s โ 17.65 GiB/s โ 28.96 GiB/s โ 27.04 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 277.3 ยตs โ 425.6 ยตs โ 308.7 ยตs โ 317.7 ยตs โ 100 โ 100
โ โ 28.49 GiB/s โ 18.56 GiB/s โ 25.6 GiB/s โ 24.87 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ โ
โ โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 586.2 ยตs โ 802 ยตs โ 692.4 ยตs โ 696.9 ยตs โ 100 โ 100
โ โ 29.98 GiB/s โ 21.91 GiB/s โ 25.38 GiB/s โ 25.22 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 549.3 ยตs โ 805.9 ยตs โ 636.3 ยตs โ 649.2 ยตs โ 100 โ 100
โ โ 30.22 GiB/s โ 20.59 GiB/s โ 26.08 GiB/s โ 25.56 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 661.3 ยตs โ 883.1 ยตs โ 723.1 ยตs โ 730 ยตs โ 100 โ 100
โ โ 24.36 GiB/s โ 18.24 GiB/s โ 22.28 GiB/s โ 22.07 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 739.9 ยตs โ 1.062 ms โ 821.8 ยตs โ 829.1 ยตs โ 100 โ 100
โ โ 21.45 GiB/s โ 14.93 GiB/s โ 19.31 GiB/s โ 19.14 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 790.2 ยตs โ 1.003 ms โ 858.9 ยตs โ 868.5 ยตs โ 100 โ 100
โ 19.96 GiB/s โ 15.72 GiB/s โ 18.36 GiB/s โ 18.16 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โฐโ recode_zero_alloc โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 9.609 ยตs โ 12.35 ยตs โ 11.86 ยตs โ 11.59 ยตs โ 100 โ 100
โ 57.17 GiB/s โ 44.45 GiB/s โ 46.29 GiB/s โ 47.37 GiB/s โ โ
โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 10.26 ยตs โ 20.96 ยตs โ 12.33 ยตs โ 12.2 ยตs โ 100 โ 100
โ 50.56 GiB/s โ 24.76 GiB/s โ 42.08 GiB/s โ 42.56 GiB/s โ โ
โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 10.72 ยตs โ 21.64 ยตs โ 11.1 ยตs โ 11.35 ยตs โ 100 โ 100
โ 47.11 GiB/s โ 23.35 GiB/s โ 45.5 GiB/s โ 44.53 GiB/s โ โ
โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 17.9 ยตs โ 28.89 ยตs โ 18.15 ยตs โ 18.3 ยตs โ 100 โ 100
โ 28.13 GiB/s โ 17.42 GiB/s โ 27.73 GiB/s โ 27.51 GiB/s โ โ
โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 41.44 ยตs โ 61.9 ยตs โ 50.01 ยตs โ 48.54 ยตs โ 100 โ 100
โ 12.61 GiB/s โ 8.447 GiB/s โ 10.45 GiB/s โ 10.77 GiB/s โ โ
โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 201.5 ยตs โ 340.1 ยตs โ 218.5 ยตs โ 219.3 ยตs โ 100 โ 100
โ 43.6 GiB/s โ 25.83 GiB/s โ 40.21 GiB/s โ 40.06 GiB/s โ โ
โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 187.9 ยตs โ 395.7 ยตs โ 218.4 ยตs โ 222.4 ยตs โ 100 โ 100
โ 44.17 GiB/s โ 20.97 GiB/s โ 38 GiB/s โ 37.32 GiB/s โ โ
โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 191 ยตs โ 360.7 ยตs โ 211.2 ยตs โ 211.7 ยตs โ 100 โ 100
โ 42.17 GiB/s โ 22.33 GiB/s โ 38.14 GiB/s โ 38.06 GiB/s โ โ
โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 198.6 ยตs โ 404.6 ยตs โ 213.6 ยตs โ 215.3 ยตs โ 100 โ 100
โ 39.98 GiB/s โ 19.62 GiB/s โ 37.17 GiB/s โ 36.87 GiB/s โ โ
โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 222.3 ยตs โ 418.2 ยตs โ 234.2 ยตs โ 240.7 ยตs โ 100 โ 100
โ 35.55 GiB/s โ 18.89 GiB/s โ 33.74 GiB/s โ 32.83 GiB/s โ โ
โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 560.4 ยตs โ 753.4 ยตs โ 655.9 ยตs โ 659.6 ยตs โ 100 โ 100
โ 31.36 GiB/s โ 23.32 GiB/s โ 26.79 GiB/s โ 26.64 GiB/s โ โ
โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 561.3 ยตs โ 792 ยตs โ 641.9 ยตs โ 648.5 ยตs โ 100 โ 100
โ 29.57 GiB/s โ 20.96 GiB/s โ 25.86 GiB/s โ 25.59 GiB/s โ โ
โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 636.7 ยตs โ 886.5 ยตs โ 720.4 ยตs โ 734.6 ยตs โ 100 โ 100
โ 25.3 GiB/s โ 18.17 GiB/s โ 22.36 GiB/s โ 21.93 GiB/s โ โ
โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 724.1 ยตs โ 926.7 ยตs โ 811.5 ยตs โ 813.3 ยตs โ 100 โ 100
โ 21.92 GiB/s โ 17.13 GiB/s โ 19.56 GiB/s โ 19.52 GiB/s โ โ
โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 751.4 ยตs โ 1.006 ms โ 805.6 ยตs โ 818.4 ยตs โ 100 โ 100
20.99 GiB/s โ 15.68 GiB/s โ 19.58 GiB/s โ 19.27 GiB/s โ โ
# ---------------------------------------------------------------------------------------------------------------------------
# Recoding with `rayon` data-parallelism, also using AVX512 intrinsics for faster vector x scalar multiplication
Timer precision: 20 ns
full_rlnc_recoder fastest โ slowest โ median โ mean โ samples โ iters
โโ recode โ โ โ โ โ
โ โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 50.2 ยตs โ 137 ยตs โ 73 ยตs โ 69.75 ยตs โ 100 โ 100
โ โ 10.94 GiB/s โ 4.01 GiB/s โ 7.526 GiB/s โ 7.877 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1.5 โ 1.01 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.75 KiB โ 64.03 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1.5 โ 1.01 โ โ
โ โ 64.01 KiB โ 64.01 KiB โ 64.75 KiB โ 64.03 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 49.08 ยตs โ 69.48 ยตs โ 58.33 ยตs โ 58.81 ยตs โ 100 โ 100
โ โ 10.58 GiB/s โ 7.474 GiB/s โ 8.902 GiB/s โ 8.829 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.06 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 32.03 KiB โ 32.03 KiB โ 32.03 KiB โ 32.06 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 64 KiB โ 64 KiB โ 64 KiB โ 64 KiB โ โ
โ โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 42.36 ยตs โ 67.97 ยตs โ 59.55 ยตs โ 58.57 ยตs โ 100 โ 100
โ โ 11.93 GiB/s โ 7.437 GiB/s โ 8.488 GiB/s โ 8.63 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.07 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 16.06 KiB โ 16.06 KiB โ 16.06 KiB โ 16.07 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 32 KiB โ 32 KiB โ 32 KiB โ 32 KiB โ โ
โ โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 40.83 ยตs โ 74.68 ยตs โ 65.13 ยตs โ 56.61 ยตs โ 100 โ 100
โ โ 12.33 GiB/s โ 6.744 GiB/s โ 7.733 GiB/s โ 8.896 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.155 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 8.125 KiB โ 8.125 KiB โ 8.125 KiB โ 8.155 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 16 KiB โ 16 KiB โ 16 KiB โ 16 KiB โ โ
โ โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 69.18 ยตs โ 108.9 ยตs โ 89.66 ยตs โ 86.59 ยตs โ 100 โ 100
โ โ 7.559 GiB/s โ 4.801 GiB/s โ 5.832 GiB/s โ 6.039 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.265 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 4.25 KiB โ 4.25 KiB โ 4.25 KiB โ 4.265 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ โ
โ โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 686.3 ยตs โ 2.291 ms โ 717.2 ยตs โ 766.2 ยตs โ 100 โ 100
โ โ 12.8 GiB/s โ 3.835 GiB/s โ 12.25 GiB/s โ 11.47 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 632.7 ยตs โ 769.1 ยตs โ 656.3 ยตs โ 658.5 ยตs โ 100 โ 100
โ โ 13.12 GiB/s โ 10.79 GiB/s โ 12.64 GiB/s โ 12.6 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 457.9 ยตs โ 986.2 ยตs โ 489.3 ยตs โ 495.1 ยตs โ 100 โ 100
โ โ 17.59 GiB/s โ 8.17 GiB/s โ 16.46 GiB/s โ 16.27 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 369.6 ยตs โ 961.7 ยตs โ 395.2 ยตs โ 421.6 ยตs โ 100 โ 100
โ โ 21.48 GiB/s โ 8.258 GiB/s โ 20.09 GiB/s โ 18.83 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ 128.1 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โ โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 364.9 ยตs โ 879.8 ยตs โ 387 ยตs โ 416.8 ยตs โ 100 โ 100
โ โ 21.65 GiB/s โ 8.984 GiB/s โ 20.42 GiB/s โ 18.96 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.26 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.01 โ โ
โ โ 64.25 KiB โ 64.25 KiB โ 64.25 KiB โ 64.26 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โ โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 1.876 ms โ 2.534 ms โ 2.115 ms โ 2.156 ms โ 100 โ 100
โ โ 9.369 GiB/s โ 6.936 GiB/s โ 8.308 GiB/s โ 8.151 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โ โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 1.546 ms โ 2.285 ms โ 1.63 ms โ 1.656 ms โ 100 โ 100
โ โ 10.73 GiB/s โ 7.264 GiB/s โ 10.18 GiB/s โ 10.02 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โ โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 1.067 ms โ 1.728 ms โ 1.1 ms โ 1.119 ms โ 100 โ 100
โ โ 15.1 GiB/s โ 9.325 GiB/s โ 14.64 GiB/s โ 14.38 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โ โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 863.3 ยตs โ 1.407 ms โ 890.8 ยตs โ 915 ยตs โ 100 โ 100
โ โ 18.38 GiB/s โ 11.27 GiB/s โ 17.82 GiB/s โ 17.35 GiB/s โ โ
โ โ max alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ alloc: โ โ โ โ โ
โ โ 1 โ 1 โ 1 โ 1.02 โ โ
โ โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ 256.1 KiB โ โ
โ โ dealloc: โ โ โ โ โ
โ โ 2 โ 2 โ 2 โ 2 โ โ
โ โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โ โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 815.7 ยตs โ 1.607 ms โ 855.1 ยตs โ 877.8 ยตs โ 100 โ 100
โ 19.34 GiB/s โ 9.812 GiB/s โ 18.45 GiB/s โ 17.97 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ alloc: โ โ โ โ โ
โ 1 โ 1 โ 1 โ 1.01 โ โ
โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ 128.2 KiB โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โฐโ recode_zero_alloc โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces, recoding with 8 pieces 53.1 ยตs โ 82.28 ยตs โ 58.36 ยตs โ 59.06 ยตs โ 100 โ 100
โ 10.34 GiB/s โ 6.677 GiB/s โ 9.414 GiB/s โ 9.301 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โโ 1.00 MB data split into 32 pieces, recoding with 16 pieces 53.54 ยตs โ 131.6 ยตs โ 57.05 ยตs โ 68.2 ยตs โ 100 โ 100
โ 9.699 GiB/s โ 3.946 GiB/s โ 9.102 GiB/s โ 7.613 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 64 KiB โ 64 KiB โ 64 KiB โ 64 KiB โ โ
โโ 1.00 MB data split into 64 pieces, recoding with 32 pieces 40.15 ยตs โ 115.7 ยตs โ 59.33 ยตs โ 69.67 ยตs โ 100 โ 100
โ 12.58 GiB/s โ 4.368 GiB/s โ 8.52 GiB/s โ 7.255 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 32 KiB โ 32 KiB โ 32 KiB โ 32 KiB โ โ
โโ 1.00 MB data split into 128 pieces, recoding with 64 pieces 42.06 ยตs โ 77.84 ยตs โ 60.1 ยตs โ 57.12 ยตs โ 100 โ 100
โ 11.97 GiB/s โ 6.47 GiB/s โ 8.38 GiB/s โ 8.818 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 16 KiB โ 16 KiB โ 16 KiB โ 16 KiB โ โ
โโ 1.00 MB data split into 256 pieces, recoding with 128 pieces 70.08 ยตs โ 111.9 ยตs โ 94.06 ยตs โ 88.98 ยตs โ 100 โ 100
โ 7.462 GiB/s โ 4.671 GiB/s โ 5.559 GiB/s โ 5.877 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ 8.001 KiB โ โ
โโ 16.00 MB data split into 16 pieces, recoding with 8 pieces 659 ยตs โ 1.507 ms โ 710.9 ยตs โ 791.4 ยตs โ 100 โ 100
โ 13.33 GiB/s โ 5.831 GiB/s โ 12.36 GiB/s โ 11.1 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 16.00 MB data split into 32 pieces, recoding with 16 pieces 591 ยตs โ 1.348 ms โ 635.2 ยตs โ 715.3 ยตs โ 100 โ 100
โ 14.04 GiB/s โ 6.156 GiB/s โ 13.06 GiB/s โ 11.6 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0.5 โ 0.02 โ โ
โ 0 B โ 0 B โ 760 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0.5 โ 0.02 โ โ
โ 0 B โ 0 B โ 760 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 16.00 MB data split into 64 pieces, recoding with 32 pieces 421.6 ยตs โ 1.033 ms โ 489.9 ยตs โ 646.9 ยตs โ 100 โ 100
โ 19.11 GiB/s โ 7.798 GiB/s โ 16.44 GiB/s โ 12.45 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โโ 16.00 MB data split into 128 pieces, recoding with 64 pieces 347.4 ยตs โ 888.4 ยตs โ 378.4 ยตs โ 498.6 ยตs โ 100 โ 100
โ 22.85 GiB/s โ 8.939 GiB/s โ 20.98 GiB/s โ 15.92 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
โโ 16.00 MB data split into 256 pieces, recoding with 128 pieces 336.4 ยตs โ 776.2 ยตs โ 381.2 ยตs โ 497.4 ยตs โ 100 โ 100
โ 23.49 GiB/s โ 10.18 GiB/s โ 20.73 GiB/s โ 15.88 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 128 KiB โ 128 KiB โ 128 KiB โ 128 KiB โ โ
โโ 32.00 MB data split into 16 pieces, recoding with 8 pieces 1.881 ms โ 2.296 ms โ 1.977 ms โ 1.992 ms โ 100 โ 100
โ 9.344 GiB/s โ 7.655 GiB/s โ 8.888 GiB/s โ 8.82 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 4 MiB โ 4 MiB โ 4 MiB โ 4 MiB โ โ
โโ 32.00 MB data split into 32 pieces, recoding with 16 pieces 1.544 ms โ 1.791 ms โ 1.625 ms โ 1.636 ms โ 100 โ 100
โ 10.75 GiB/s โ 9.265 GiB/s โ 10.21 GiB/s โ 10.14 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 2 MiB โ 2 MiB โ 2 MiB โ 2 MiB โ โ
โโ 32.00 MB data split into 64 pieces, recoding with 32 pieces 1.056 ms โ 1.262 ms โ 1.087 ms โ 1.105 ms โ 100 โ 100
โ 15.24 GiB/s โ 12.76 GiB/s โ 14.81 GiB/s โ 14.58 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.02 โ โ
โ 0 B โ 0 B โ 0 B โ 30.4 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 1 MiB โ 1 MiB โ 1 MiB โ 1 MiB โ โ
โโ 32.00 MB data split into 128 pieces, recoding with 64 pieces 863.8 ยตs โ 985.2 ยตs โ 893.4 ยตs โ 900 ยตs โ 100 โ 100
โ 18.38 GiB/s โ 16.11 GiB/s โ 17.77 GiB/s โ 17.64 GiB/s โ โ
โ max alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ alloc: โ โ โ โ โ
โ 0 โ 0 โ 0 โ 0.01 โ โ
โ 0 B โ 0 B โ 0 B โ 15.2 B โ โ
โ dealloc: โ โ โ โ โ
โ 2 โ 2 โ 2 โ 2 โ โ
โ 512 KiB โ 512 KiB โ 512 KiB โ 512 KiB โ โ
โฐโ 32.00 MB data split into 256 pieces, recoding with 128 pieces 819.6 ยตs โ 944.9 ยตs โ 854.2 ยตs โ 860.2 ยตs โ 100 โ 100
19.25 GiB/s โ 16.69 GiB/s โ 18.46 GiB/s โ 18.34 GiB/s โ โ
max alloc: โ โ โ โ โ
0 โ 0 โ 0 โ 0.02 โ โ
0 B โ 0 B โ 0 B โ 30.4 B โ โ
alloc: โ โ โ โ โ
0 โ 0 โ 0 โ 0.02 โ โ
0 B โ 0 B โ 0 B โ 30.4 B โ โ
dealloc: โ โ โ โ โ
2 โ 2 โ 2 โ 2 โ โ
256 KiB โ 256 KiB โ 256 KiB โ 256 KiB โ โ
# Decoding with AVX512-powered SIMD vector x scalar multiplication
Timer precision: 20 ns
full_rlnc_decoder fastest โ slowest โ median โ mean โ samples โ iters
โฐโ decode โ โ โ โ โ
โโ 1.00 MB data split into 16 pieces 434.5 ยตs โ 904 ยตs โ 446 ยตs โ 453.1 ยตs โ 100 โ 100
โ 2.247 GiB/s โ 1.08 GiB/s โ 2.19 GiB/s โ 2.155 GiB/s โ โ
โโ 1.00 MB data split into 32 pieces 821 ยตs โ 1.217 ms โ 834.3 ยตs โ 838.3 ยตs โ 100 โ 100
โ 1.19 GiB/s โ 822.4 MiB/s โ 1.171 GiB/s โ 1.165 GiB/s โ โ
โโ 1.00 MB data split into 64 pieces 1.667 ms โ 1.748 ms โ 1.681 ms โ 1.681 ms โ 100 โ 100
โ 602.1 MiB/s โ 574.1 MiB/s โ 597 MiB/s โ 596.9 MiB/s โ โ
โโ 1.00 MB data split into 128 pieces 3.836 ms โ 3.914 ms โ 3.85 ms โ 3.854 ms โ 100 โ 100
โ 264.7 MiB/s โ 259.4 MiB/s โ 263.8 MiB/s โ 263.5 MiB/s โ โ
โโ 1.00 MB data split into 256 pieces 12.66 ms โ 12.88 ms โ 12.7 ms โ 12.7 ms โ 100 โ 100
โ 83.91 MiB/s โ 82.5 MiB/s โ 83.66 MiB/s โ 83.62 MiB/s โ โ
โโ 16.00 MB data split into 16 pieces 8.566 ms โ 16.12 ms โ 8.655 ms โ 8.821 ms โ 100 โ 100
โ 1.823 GiB/s โ 992 MiB/s โ 1.805 GiB/s โ 1.771 GiB/s โ โ
โโ 16.00 MB data split into 32 pieces 15.34 ms โ 15.88 ms โ 15.41 ms โ 15.43 ms โ 100 โ 100
โ 1.018 GiB/s โ 1007 MiB/s โ 1.013 GiB/s โ 1.012 GiB/s โ โ
โโ 16.00 MB data split into 64 pieces 28.61 ms โ 29.15 ms โ 28.74 ms โ 28.75 ms โ 100 โ 100
โ 559.1 MiB/s โ 548.9 MiB/s โ 556.8 MiB/s โ 556.6 MiB/s โ โ
โโ 16.00 MB data split into 128 pieces 57.11 ms โ 57.84 ms โ 57.29 ms โ 57.32 ms โ 100 โ 100
โ 280.4 MiB/s โ 276.8 MiB/s โ 279.5 MiB/s โ 279.3 MiB/s โ โ
โโ 16.00 MB data split into 256 pieces 119.1 ms โ 119.9 ms โ 119.3 ms โ 119.3 ms โ 100 โ 100
โ 134.8 MiB/s โ 133.9 MiB/s โ 134.6 MiB/s โ 134.5 MiB/s โ โ
โโ 32.00 MB data split into 16 pieces 33.41 ms โ 36.07 ms โ 34.52 ms โ 34.58 ms โ 100 โ 100
โ 957.5 MiB/s โ 886.9 MiB/s โ 926.7 MiB/s โ 925.1 MiB/s โ โ
โโ 32.00 MB data split into 32 pieces 50.01 ms โ 52.75 ms โ 50.68 ms โ 50.83 ms โ 100 โ 100
โ 639.8 MiB/s โ 606.5 MiB/s โ 631.3 MiB/s โ 629.4 MiB/s โ โ
โโ 32.00 MB data split into 64 pieces 82.79 ms โ 88.45 ms โ 84.02 ms โ 84.51 ms โ 100 โ 100
โ 386.5 MiB/s โ 361.8 MiB/s โ 380.8 MiB/s โ 378.6 MiB/s โ โ
โโ 32.00 MB data split into 128 pieces 152.7 ms โ 172.3 ms โ 157.3 ms โ 157.9 ms โ 100 โ 100
โ 209.5 MiB/s โ 185.7 MiB/s โ 203.4 MiB/s โ 202.7 MiB/s โ โ
โฐโ 32.00 MB data split into 256 pieces 298.2 ms โ 327.6 ms โ 307 ms โ 307.6 ms โ 100 โ 100
107.5 MiB/s โ 97.86 MiB/s โ 104.4 MiB/s โ 104.2 MiB/s โ โ
Here's a side-by-side comparison of the peak median throughput between the x86_64 with AVX2 (12th Gen Intel(R) Core(TM) i7-1260P
), aarch64 with NEON (AWS EC2 m8g.large
with Graviton4 CPU), x86_64 with Intel AVX512 (AWS EC2 m7i.xlarge
with Intel(R) Xeon(R) Platinum 8488C), and x86_64 with **AMD AVX512** (
AWS EC2 m7a.large` with AMD EPYC 9R14) targets.
Component | x86_64 AVX2 (default ) |
x86_64 Intel AVX512 (default ) |
x86_64 AMD AVX512 (default ) |
aarch64 NEON (default ) |
x86_64 AVX2 (parallel ) |
x86_64 Intel AVX512 (parallel ) |
x86_64 AMD AVX512 (parallel ) |
aarch64 NEON (parallel ) |
---|
Full RLNC Encoder | 30.14 GiB/s | 48.36 GiB/s | 52.42 GiB/s | 19.73 GiB/s | 23.39 GiB/s | 16.01 GiB/s | 25.22 GiB/s | 12.95 GiB/s Full RLNC Recoder | 27.26 GiB/s | 34.39 GiB/s | 45.15 GiB/s | 19.2 GiB/s | 12.63 GiB/s | 9.58 GiB/s | 8.902 GiB/s | 10.43 GiB/s Full RLNC Decoder | 1.59 GiB/s | 1.929 GiB/s | 2.19 GiB/s | 0.84 GiB/s | N/A | N/A | N/A | N/A
The x86_64 architecture with AMD AVX512 optimizations (m7a.large
) delivers the highest performance across all operations, particularly excelling in default (single-threaded) mode. The Intel AVX512 processor (m7i.xlarge
) and AMD AVX512 processor (m7a.large
) both significantly outperform the x86_64 processor with AVX2 optimizations, which in turn generally outperforms the aarch64 architecture with NEON optimizations. Interestingly, for parallel operations, the AMD AVX512 processor outperforms the Intel AVX512 processor for encoding, while the performance varies for recoding operations, likely due to different core configurations and workload characteristics. Decoding remains a serial operation and is fastest on the AMD AVX512 processor.
To use rlnc
library crate in your Rust project, add it as a dependency in your Cargo.toml
:
[dependencies]
rlnc = "=0.8.4" # On x86_64 and aarch64 targets, it offers fast encoding, recoding and decoding, using SIMD intrinsics.
# or
rlnc = { version = "=0.8.4", features = "parallel" } # Uses `rayon`-based data-parallelism for fast encoding and recoding. Note, this feature, doesn't yet parallelize RLNC decoding.
rand = { version = "=0.9.1" } # Required for random number generation
I maintain an example demonstrating the Full RLNC workflow:
[!NOTE] New recoded pieces could be either useful or not for the Decoder, based on Recoder input coded pieces i.e. from which they are recoded and whether they have already been seen by Decoder or not.
See full_rlnc.rs example program. Run the program with $ make example
.
Initialized Encoder with 10240 bytes of data, split into 32 pieces, each of 321 bytes. Each coded piece will be of 353 bytes.
Initializing Decoder, expecting 32 original pieces of 321 bytes each.
Sender generating 16 initial coded pieces...
Decoded direct piece 1: Useful.
Decoded direct piece 2: Useful.
Decoded direct piece 3: Useful.
Decoded direct piece 4: Useful.
Decoded direct piece 5: Useful.
Decoded direct piece 6: Useful.
Decoded direct piece 7: Useful.
Decoded direct piece 8: Useful.
Decoded direct piece 9: Useful.
Decoded direct piece 10: Useful.
Decoded direct piece 11: Useful.
Decoded direct piece 12: Useful.
Decoded direct piece 13: Useful.
Decoded direct piece 14: Useful.
Decoded direct piece 15: Useful.
Decoded direct piece 16: Useful.
Initializing Recoder with 5648 bytes of received coded pieces.
Recoder active. Generating recoded pieces...
Decoded recoded piece 1: Not useful.
Decoded recoded piece 2: Not useful.
Decoded recoded piece 3: Not useful.
Decoded recoded piece 4: Not useful.
Decoded recoded piece 5: Not useful.
Decoded recoded piece 6: Not useful.
Decoded recoded piece 7: Not useful.
Decoded recoded piece 8: Not useful.
Decoded recoded piece 9: Not useful.
Decoded recoded piece 10: Not useful.
Decoded recoded piece 11: Not useful.
Decoded recoded piece 12: Not useful.
Decoded recoded piece 13: Not useful.
Decoded recoded piece 14: Not useful.
Decoded recoded piece 15: Not useful.
Decoded recoded piece 16: Not useful.
Decoded recoded piece 17: Not useful.
Decoded recoded piece 18: Not useful.
Decoded recoded piece 19: Not useful.
Decoded recoded piece 20: Not useful.
Decoded recoded piece 21: Not useful.
Decoded recoded piece 22: Not useful.
Decoded recoded piece 23: Not useful.
Decoded recoded piece 24: Not useful.
Decoded recoded piece 25: Not useful.
Decoded recoded piece 26: Not useful.
Decoded recoded piece 27: Not useful.
Decoded recoded piece 28: Not useful.
Decoded recoded piece 29: Not useful.
Decoded recoded piece 30: Not useful.
Decoded recoded piece 31: Not useful.
Decoded recoded piece 32: Not useful.
Decoded recoded piece 33: Not useful.
Decoded recoded piece 34: Not useful.
Decoded recoded piece 35: Not useful.
Decoded recoded piece 36: Not useful.
Decoded recoded piece 37: Not useful.
Decoded recoded piece 38: Not useful.
Decoded recoded piece 39: Not useful.
Decoded recoded piece 40: Not useful.
Decoded recoded piece 41: Not useful.
Decoded recoded piece 42: Not useful.
Decoded recoded piece 43: Not useful.
Decoded recoded piece 44: Not useful.
Decoded recoded piece 45: Not useful.
Decoded recoded piece 46: Not useful.
Decoded recoded piece 47: Not useful.
Decoded recoded piece 48: Not useful.
Decoded recoded piece 49: Not useful.
Decoded recoded piece 50: Not useful.
Decoded recoded piece 51: Not useful.
Decoded recoded piece 52: Not useful.
Decoded recoded piece 53: Not useful.
Decoded recoded piece 54: Not useful.
Decoded recoded piece 55: Not useful.
Decoded recoded piece 56: Not useful.
Decoded recoded piece 57: Not useful.
Decoded recoded piece 58: Not useful.
Decoded recoded piece 59: Not useful.
Decoded recoded piece 60: Not useful.
Decoded recoded piece 61: Not useful.
Decoded recoded piece 62: Not useful.
Decoded recoded piece 63: Not useful.
Decoded recoded piece 64: Not useful.
Initializing a new Recoder with 5648 bytes of received coded pieces.
Decoded recoded piece 1: Useful.
Decoded recoded piece 2: Useful.
Decoded recoded piece 3: Useful.
Decoded recoded piece 4: Useful.
Decoded recoded piece 5: Useful.
Decoded recoded piece 6: Useful.
Decoded recoded piece 7: Useful.
Decoded recoded piece 8: Useful.
Still need more pieces. Generating direct piece 17 from encoder...
Decoded direct piece 17: Useful.
Still need more pieces. Generating direct piece 18 from encoder...
Decoded direct piece 18: Useful.
Still need more pieces. Generating direct piece 19 from encoder...
Decoded direct piece 19: Useful.
Still need more pieces. Generating direct piece 20 from encoder...
Decoded direct piece 20: Useful.
Still need more pieces. Generating direct piece 21 from encoder...
Decoded direct piece 21: Useful.
Still need more pieces. Generating direct piece 22 from encoder...
Decoded direct piece 22: Useful.
Still need more pieces. Generating direct piece 23 from encoder...
Decoded direct piece 23: Useful.
Still need more pieces. Generating direct piece 24 from encoder...
Decoded direct piece 24: Useful.
Retrieving decoded data...
RLNC workflow completed successfully! Original data matches decoded data.