[ANN] data-encoding.0.3: performances and streaming

According to the micro-benchmark below data-encoding.0.3 gets close to Marshal performances on the serialising and deserialising of Micheline values (S-EXP-like values used to represent smart-contracts on the Tezos blockchain).

The results are printed below. Notice the speed up:

  • for serialising it progressed from a 13.40× slow-down over Marshal to a 1.01× slow-down,
  • for deserialising it progressed from a 18.72× slow-down over Marshal to a 1.02× slow-down.
* data-encoding 0.2
Estimated testing time 20s (2 benchmarks x 10s). Change using '-quota'.
┌────────────────┬──────────┬────────────┬─────────────────┬──────────┬───────────┬───────────┬────────────┬─────────┐
│ Name           │ Time R^2 │   Time/Run │            95ci │  mWd/Run │  mjWd/Run │  Prom/Run │ Percentage │ Speedup │
├────────────────┼──────────┼────────────┼─────────────────┼──────────┼───────────┼───────────┼────────────┼─────────┤
│ marshal_encode │     1.00 │   102.89us │ -0.05us +0.06us │   5.74kw │     0.11w │     0.11w │      7.46% │    1.00 │
│ binary_encode  │     1.00 │ 1_378.70us │ -7.47us +8.73us │ 953.58kw │ 1_489.94w │ 1_489.94w │    100.00% │   13.40 │
└────────────────┴──────────┴────────────┴─────────────────┴──────────┴───────────┴───────────┴────────────┴─────────┘
Estimated testing time 20s (2 benchmarks x 10s). Change using '-quota'.
┌────────────────┬──────────┬────────────┬─────────────────┬──────────┬───────────┬───────────┬────────────┬─────────┐
│ Name           │ Time R^2 │   Time/Run │            95ci │  mWd/Run │  mjWd/Run │  Prom/Run │ Percentage │ Speedup │
├────────────────┼──────────┼────────────┼─────────────────┼──────────┼───────────┼───────────┼────────────┼─────────┤
│ marshal_decode │     1.00 │    73.58us │ -0.62us +0.59us │   7.59kw │     0.16w │     0.16w │      5.34% │    1.00 │
│ binary_decode  │     1.00 │ 1_377.68us │ -4.26us +4.35us │ 951.99kw │ 1_464.25w │ 1_464.25w │    100.00% │   18.72 │
└────────────────┴──────────┴────────────┴─────────────────┴──────────┴───────────┴───────────┴────────────┴─────────┘
* data-encoding 0.3
┌────────────────┬──────────┬──────────┬─────────────────┬─────────┬──────────┬──────────┬────────────┬─────────┐
│ Name           │ Time R^2 │ Time/Run │            95ci │ mWd/Run │ mjWd/Run │ Prom/Run │ Percentage │ Speedup │
├────────────────┼──────────┼──────────┼─────────────────┼─────────┼──────────┼──────────┼────────────┼─────────┤
│ marshal_encode │     1.00 │ 102.05us │ -0.15us +0.18us │  5.74kw │    0.11w │    0.11w │     99.40% │    1.00 │
│ binary_encode  │     1.00 │ 102.67us │ -0.39us +0.44us │ 37.55kw │    2.55w │    2.55w │    100.00% │    1.01 │
└────────────────┴──────────┴──────────┴─────────────────┴─────────┴──────────┴──────────┴────────────┴─────────┘
Estimated testing time 20s (2 benchmarks x 10s). Change using '-quota'.
┌────────────────┬──────────┬──────────┬─────────────────┬─────────┬──────────┬──────────┬────────────┬─────────┐
│ Name           │ Time R^2 │ Time/Run │            95ci │ mWd/Run │ mjWd/Run │ Prom/Run │ Percentage │ Speedup │
├────────────────┼──────────┼──────────┼─────────────────┼─────────┼──────────┼──────────┼────────────┼─────────┤
│ marshal_decode │     1.00 │  72.21us │ -0.29us +0.33us │  7.59kw │    0.16w │    0.16w │     97.57% │    1.00 │
│ binary_decode  │     1.00 │  74.00us │ -0.29us +0.31us │ 36.48kw │    2.89w │    2.89w │    100.00% │    1.02 │
└────────────────┴──────────┴──────────┴─────────────────┴─────────┴──────────┴──────────┴────────────┴─────────┘

Do not hesitate to open an issue on the project’s issue tracker to let us know about encodings that are still too slow.

8 Likes