# Performance comparison # ## The base case ## Let's assume we have a secret of length _m_. The splitting takes _n_ evaluations of a polynomial of order _k_ (over Galois field 256) for each byte, leading to _O(n\*k\*m)_ finite field multiplications. Reconstruction of the constant parameters during joining first precomputes parts of the Lagrange polynomial and then reuses them for each byte, taking _O(k\*k + k\*m)_ multiplications. Benchmark results. Measured on a mid-end laptop made in 2020. The times for split and join mean _seconds per byte_ of the secret length:
Revision | Features | k / n parameters | Split | Join |
---|---|---|---|---|
a47ae3e113cc | - | 2 / 3 | 5.02e-06 | 4.12e-05 |
254 / 254 | 0.0125 | 0.00175 | ||
c6815615a077 | gfmul() caching | 2 / 3 | 5.38e-06 | 4.28e-05 |
254 / 254 | 0.00741 | 0.00156 | ||
0957647049ef | splitting with FFT | 2 / 3 | 1.26e-05 | - |
254 / 254 | 0.00828 | - | ||
d5f60adc56c0 | splitting with FFT, caching gfmul(), gfpow(), precompute_x() |
2 / 3 | 7.88e-06 | - |
254 / 254 | 0.00183 | - |