cramjam 2.0.2

Thin Python bindings to de/compression algorithms in Rust
Documentation
Benchmarks
---

*Dislcaimer: remember benchmarks are generally fraught with issues and their
legitimacy depends on a multitude of factors.*

I've used basic, but seemingly nice, [`pytest-benchmark`](https://pytest-benchmark.readthedocs.io/en/stable/usage.html)
to produce the following benchmarks on a fairly modern machine.

If you'd like to run these yourself, you'll need whatever according system 
dependency, if any, required by the specific algorithm as well as the Python
lib installed. Can install all via `pip install -r benchmark-requirements.txt`. 

The resulting output from benchmarks indicate what file and lib was used, (`cramjam` vs `gzip`)
`test_gzip[urls.10K-cramjam]` indicates `cramjam` and `benchmarks/data/urls.10K` file was used during the gzip benchmark.


Special performance notes:
---
In general, if the length of the output from de/compression is known, for any variant,  
you can provide `output_len=<<some int>>` to get a 1-4x performance increase. This
is allows us to avoid double allocation. 

Furthermore, you can provide `output_len` equal to the "at most" length when 
de/compressing `bytearray` objects; as these can be resized after the de/compression 
is finished and actual size is known for basically the same performance. This is not
true for `bytes` objects, as we cannot resize after de/compression and the result
will be trialing null bytes.

For snappy used in conjunction with `bytearray`s, this is only midly helpful as
we automatically estimate the buffer size and can resize the `bytearray` after.


--- 

#### Gzip

`make bench-gzip`


Notes
---
This benchmark is parameterized over setting `output_len=True/False` as an example
of the performance benefit that can be expected from various files/sizes.


```bash 
---------------------------------------------------------------------------------------------------------------------- benchmark: 48 tests ----------------------------------------------------------------------------------------------------------------------
Name (time in us)                                                              Min                    Max                   Mean                StdDev                 Median                   IQR            Outliers         OPS            Rounds  Iterations
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_gzip[Mark.Twain-Tom.Sawyer.txt-used-output_len=False-cramjam]        498.6320 (1.0)         904.3340 (1.02)        538.3901 (1.02)        48.5933 (1.17)        524.5310 (1.01)        37.6930 (1.09)      152;105  1,857.3891 (0.98)       1505           1
test_gzip[Mark.Twain-Tom.Sawyer.txt-used-output_len=False-gzip]           574.8140 (1.15)      1,032.3880 (1.16)        616.4469 (1.17)        53.9548 (1.30)        602.6820 (1.17)        45.1167 (1.31)       122;85  1,622.1997 (0.86)       1475           1
test_gzip[Mark.Twain-Tom.Sawyer.txt-used-output_len=True-cramjam]         499.6490 (1.00)        887.7370 (1.0)         528.1259 (1.0)         41.6166 (1.0)         517.1500 (1.0)         34.4905 (1.0)        149;93  1,893.4877 (1.0)        1676           1
test_gzip[Mark.Twain-Tom.Sawyer.txt-used-output_len=True-gzip]            575.3320 (1.15)        961.8130 (1.08)        617.2423 (1.17)        48.7969 (1.17)        601.3870 (1.16)        41.9803 (1.22)       127;71  1,620.1094 (0.86)       1329           1
test_gzip[alice29.txt-used-output_len=False-cramjam]                   10,896.4080 (21.85)    12,870.5330 (14.50)    11,282.3297 (21.36)      330.3431 (7.94)     11,201.8925 (21.66)      364.0470 (10.55)        15;3     88.6342 (0.05)         86           1
test_gzip[alice29.txt-used-output_len=False-gzip]                      12,027.0880 (24.12)    14,208.4480 (16.01)    12,427.6071 (23.53)      395.2144 (9.50)     12,312.2350 (23.81)      363.9955 (10.55)        12;3     80.4660 (0.04)         80           1
test_gzip[alice29.txt-used-output_len=True-cramjam]                    10,912.5080 (21.88)    13,144.6680 (14.81)    11,313.8446 (21.42)      331.2081 (7.96)     11,236.6165 (21.73)      315.2310 (9.14)         11;3     88.3873 (0.05)         90           1
test_gzip[alice29.txt-used-output_len=True-gzip]                       11,991.7980 (24.05)    14,076.5000 (15.86)    12,457.9527 (23.59)      439.7621 (10.57)    12,263.0020 (23.71)      461.3358 (13.38)        11;5     80.2700 (0.04)         81           1
test_gzip[asyoulik.txt-used-output_len=False-cramjam]                   8,340.2480 (16.73)     9,570.2210 (10.78)     8,648.5055 (16.38)      233.7639 (5.62)      8,591.8990 (16.61)      269.5990 (7.82)         27;5    115.6269 (0.06)        118           1
test_gzip[asyoulik.txt-used-output_len=False-gzip]                      9,158.9250 (18.37)     9,988.6440 (11.25)     9,459.7682 (17.91)      186.1147 (4.47)      9,412.7690 (18.20)      276.7113 (8.02)         38;0    105.7108 (0.06)        107           1
test_gzip[asyoulik.txt-used-output_len=True-cramjam]                    8,319.9830 (16.69)    10,737.6260 (12.10)     8,666.3427 (16.41)      322.9455 (7.76)      8,599.2010 (16.63)      258.3250 (7.49)         12;3    115.3889 (0.06)        113           1
test_gzip[asyoulik.txt-used-output_len=True-gzip]                       9,188.2840 (18.43)    11,275.7290 (12.70)     9,525.4683 (18.04)      351.3017 (8.44)      9,419.5680 (18.21)      268.0395 (7.77)          8;6    104.9817 (0.06)        100           1
test_gzip[fireworks.jpeg-used-output_len=False-cramjam]                 3,934.7320 (7.89)      6,228.3300 (7.02)      4,123.2676 (7.81)       232.6841 (5.59)      4,057.8555 (7.85)       139.8660 (4.06)        21;20    242.5261 (0.13)        238           1
test_gzip[fireworks.jpeg-used-output_len=False-gzip]                    3,225.5690 (6.47)      5,195.1360 (5.85)      3,414.4240 (6.47)       234.7346 (5.64)      3,347.1610 (6.47)       129.6175 (3.76)        25;26    292.8752 (0.15)        285           1
test_gzip[fireworks.jpeg-used-output_len=True-cramjam]                  3,937.0940 (7.90)      6,554.8870 (7.38)      4,114.5315 (7.79)       247.2504 (5.94)      4,073.0180 (7.88)       147.3470 (4.27)          7;7    243.0410 (0.13)        131           1
test_gzip[fireworks.jpeg-used-output_len=True-gzip]                     3,198.9300 (6.42)      5,349.8960 (6.03)      3,404.4112 (6.45)       244.9796 (5.89)      3,344.0150 (6.47)       147.7962 (4.29)        19;18    293.7366 (0.16)        279           1
test_gzip[geo.protodata-used-output_len=False-cramjam]                  1,585.4920 (3.18)      2,736.4010 (3.08)      1,661.7925 (3.15)       102.5084 (2.46)      1,640.5520 (3.17)        73.7418 (2.14)        37;31    601.7598 (0.32)        597           1
test_gzip[geo.protodata-used-output_len=False-gzip]                     2,139.4700 (4.29)      3,134.1810 (3.53)      2,243.2067 (4.25)       124.7361 (3.00)      2,215.2610 (4.28)        91.4940 (2.65)        33;21    445.7904 (0.24)        442           1
test_gzip[geo.protodata-used-output_len=True-cramjam]                   1,581.0920 (3.17)      2,745.9970 (3.09)      1,656.5480 (3.14)       113.7994 (2.73)      1,627.7865 (3.15)        66.2845 (1.92)        41;41    603.6650 (0.32)        612           1
test_gzip[geo.protodata-used-output_len=True-gzip]                      2,150.2560 (4.31)      3,237.2160 (3.65)      2,254.2443 (4.27)       149.2253 (3.59)      2,217.4510 (4.29)        92.2995 (2.68)        30;29    443.6076 (0.23)        437           1
test_gzip[html-used-output_len=False-cramjam]                           1,960.5420 (3.93)      3,141.3660 (3.54)      2,048.0674 (3.88)       109.5254 (2.63)      2,023.5200 (3.91)        78.3633 (2.27)        35;27    488.2652 (0.26)        495           1
test_gzip[html-used-output_len=False-gzip]                              2,473.2450 (4.96)      3,558.9080 (4.01)      2,594.7358 (4.91)       128.5785 (3.09)      2,570.0210 (4.97)       103.8637 (3.01)        33;20    385.3957 (0.20)        379           1
test_gzip[html-used-output_len=True-cramjam]                            1,958.1090 (3.93)      3,045.2460 (3.43)      2,048.7684 (3.88)       118.1116 (2.84)      2,024.7970 (3.92)        73.6460 (2.14)        25;25    488.0981 (0.26)        460           1
test_gzip[html-used-output_len=True-gzip]                               2,459.9110 (4.93)      3,534.8000 (3.98)      2,597.0396 (4.92)       153.6156 (3.69)      2,559.4020 (4.95)        97.3550 (2.82)        31;30    385.0538 (0.20)        387           1
test_gzip[html_x_4-used-output_len=False-cramjam]                       9,386.4630 (18.82)    10,598.7610 (11.94)     9,729.7528 (18.42)      273.3211 (6.57)      9,641.9175 (18.64)      232.4350 (6.74)         18;9    102.7775 (0.05)        100           1
test_gzip[html_x_4-used-output_len=False-gzip]                         10,954.5380 (21.97)    12,229.1090 (13.78)    11,388.3416 (21.56)      314.4430 (7.56)     11,291.9835 (21.84)      441.7480 (12.81)        28;0     87.8091 (0.05)         88           1
test_gzip[html_x_4-used-output_len=True-cramjam]                        9,362.4440 (18.78)    10,832.3570 (12.20)     9,753.7416 (18.47)      237.0947 (5.70)      9,740.3650 (18.83)      287.9575 (8.35)         20;4    102.5248 (0.05)         99           1
test_gzip[html_x_4-used-output_len=True-gzip]                          10,925.2580 (21.91)    12,430.4210 (14.00)    11,443.7624 (21.67)      264.1632 (6.35)     11,395.8990 (22.04)      319.3560 (9.26)         22;2     87.3838 (0.05)         87           1
test_gzip[kppkn.gtb-used-output_len=False-cramjam]                     39,132.5940 (78.48)    40,894.0630 (46.07)    39,748.0645 (75.26)      372.1767 (8.94)     39,747.7660 (76.86)      304.5605 (8.83)          6;1     25.1585 (0.01)         25           1
test_gzip[kppkn.gtb-used-output_len=False-gzip]                        63,357.7700 (127.06)   64,867.0860 (73.07)    63,931.2074 (121.05)     431.4790 (10.37)    63,917.2790 (123.60)     455.9250 (13.22)         5;2     15.6418 (0.01)         16           1
test_gzip[kppkn.gtb-used-output_len=True-cramjam]                      39,015.7680 (78.25)    42,225.1180 (47.56)    39,948.5314 (75.64)      763.3876 (18.34)    39,720.7660 (76.81)      784.1145 (22.73)         6;2     25.0322 (0.01)         25           1
test_gzip[kppkn.gtb-used-output_len=True-gzip]                         63,601.0280 (127.55)   65,441.2490 (73.72)    64,262.9742 (121.68)     533.9574 (12.83)    64,180.3945 (124.10)     821.0655 (23.81)         5;0     15.5611 (0.01)         16           1
test_gzip[lcet10.txt-used-output_len=False-cramjam]                    26,893.0920 (53.93)    28,413.5420 (32.01)    27,353.3749 (51.79)      383.5836 (9.22)     27,217.9150 (52.63)      500.9510 (14.52)         9;2     36.5586 (0.02)         37           1
test_gzip[lcet10.txt-used-output_len=False-gzip]                       29,453.3110 (59.07)    32,535.7740 (36.65)    30,217.1804 (57.22)      580.9736 (13.96)    30,086.3775 (58.18)      727.5420 (21.09)         6;1     33.0938 (0.02)         34           1
test_gzip[lcet10.txt-used-output_len=True-cramjam]                     26,531.6900 (53.21)    27,972.4670 (31.51)    27,264.7757 (51.63)      359.6821 (8.64)     27,271.8585 (52.73)      541.0055 (15.69)        12;0     36.6774 (0.02)         36           1
test_gzip[lcet10.txt-used-output_len=True-gzip]                        29,633.5980 (59.43)    31,146.0220 (35.08)    30,229.0893 (57.24)      363.9110 (8.74)     30,206.0570 (58.41)      489.7215 (14.20)        10;0     33.0807 (0.02)         33           1
test_gzip[paper-100k.pdf-used-output_len=False-cramjam]                 2,830.4720 (5.68)      3,538.2900 (3.99)      2,964.3271 (5.61)       107.5574 (2.58)      2,941.1885 (5.69)       120.8570 (3.50)        64;15    337.3447 (0.18)        318           1
test_gzip[paper-100k.pdf-used-output_len=False-gzip]                    3,236.7040 (6.49)      4,065.8930 (4.58)      3,425.2506 (6.49)       142.2416 (3.42)      3,401.9400 (6.58)       147.6630 (4.28)        69;16    291.9494 (0.15)        290           1
test_gzip[paper-100k.pdf-used-output_len=True-cramjam]                  2,829.1540 (5.67)      3,389.4550 (3.82)      2,957.7600 (5.60)       108.1616 (2.60)      2,929.9220 (5.67)       113.1508 (3.28)        58;24    338.0937 (0.18)        331           1
test_gzip[paper-100k.pdf-used-output_len=True-gzip]                     3,244.5330 (6.51)      5,180.7690 (5.84)      3,436.5281 (6.51)       201.4648 (4.84)      3,392.0260 (6.56)       125.4383 (3.64)        26;26    290.9914 (0.15)        261           1
test_gzip[plrabn12.txt-used-output_len=False-cramjam]                  49,320.9690 (98.91)    74,427.5540 (83.84)    53,266.0228 (100.86)   5,882.3811 (141.35)   51,283.4770 (99.17)    2,127.7145 (61.69)         2;3     18.7737 (0.01)         20           1
test_gzip[plrabn12.txt-used-output_len=False-gzip]                     58,243.8110 (116.81)   62,047.1040 (69.89)    60,300.9332 (114.18)   1,419.1243 (34.10)    60,473.5410 (116.94)   2,739.9335 (79.44)         7;0     16.5835 (0.01)         16           1
test_gzip[plrabn12.txt-used-output_len=True-cramjam]                   49,100.9320 (98.47)    63,868.7720 (71.95)    52,104.9511 (98.66)    4,869.3169 (117.00)   49,982.7855 (96.65)    1,824.6450 (52.90)         3;3     19.1920 (0.01)         16           1
test_gzip[plrabn12.txt-used-output_len=True-gzip]                      58,425.0160 (117.17)   63,285.9410 (71.29)    59,995.6096 (113.60)   1,132.8758 (27.22)    60,199.5660 (116.41)   1,314.8300 (38.12)         4;1     16.6679 (0.01)         17           1
test_gzip[urls.10K-used-output_len=False-cramjam]                      36,073.3510 (72.34)    41,615.1860 (46.88)    38,465.0136 (72.83)    1,701.3922 (40.88)    38,056.7860 (73.59)    3,375.4912 (97.87)        10;0     25.9977 (0.01)         23           1
test_gzip[urls.10K-used-output_len=False-gzip]                         40,484.9950 (81.19)    42,920.4170 (48.35)    41,712.5562 (78.98)      718.7713 (17.27)    41,697.8900 (80.63)    1,178.5225 (34.17)         7;0     23.9736 (0.01)         25           1
test_gzip[urls.10K-used-output_len=True-cramjam]                       36,067.1570 (72.33)    39,557.0310 (44.56)    37,054.0519 (70.16)      729.0753 (17.52)    36,985.7040 (71.52)      730.4390 (21.18)         7;1     26.9876 (0.01)         27           1
test_gzip[urls.10K-used-output_len=True-gzip]                          40,734.0010 (81.69)    43,980.7760 (49.54)    42,111.1947 (79.74)      836.1285 (20.09)    42,234.7625 (81.67)    1,114.0880 (32.30)         9;0     23.7467 (0.01)         24           1
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
```

#### Snappy

There are two types here, `framed` and `raw`; the recommended one being snappy's `framed` format.

`make bench-snappy-framed`

```bash
------------------------------------------------------------------------------------------------------------ benchmark: 24 tests ------------------------------------------------------------------------------------------------------------
Name (time in us)                                                Min                   Max                  Mean              StdDev                Median                 IQR            Outliers          OPS            Rounds  Iterations
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_snappy_framed[Mark.Twain-Tom.Sawyer.txt-cramjam]        66.9240 (1.0)        154.2760 (1.0)         72.3902 (1.0)        9.7916 (1.0)         69.3480 (1.0)        3.1895 (1.0)       529;887  13,814.0175 (1.0)        5297           1
test_snappy_framed[Mark.Twain-Tom.Sawyer.txt-snappy]        127.9920 (1.91)       269.7400 (1.75)       136.3288 (1.88)      15.0409 (1.54)       129.3530 (1.87)       7.1885 (2.25)      496;644   7,335.2064 (0.53)       4257           1
test_snappy_framed[alice29.txt-cramjam]                     668.5400 (9.99)     1,039.1390 (6.74)       704.8739 (9.74)      41.9223 (4.28)       692.8285 (9.99)      43.8280 (13.74)      153;70   1,418.6935 (0.10)       1362           1
test_snappy_framed[alice29.txt-snappy]                    1,369.6490 (20.47)    1,804.7350 (11.70)    1,451.3804 (20.05)     73.8900 (7.55)     1,436.7360 (20.72)     64.1737 (20.12)      164;51     688.9993 (0.05)        657           1
test_snappy_framed[asyoulik.txt-cramjam]                    594.3560 (8.88)       909.6040 (5.90)       654.6089 (9.04)      58.4995 (5.97)       635.0080 (9.16)      35.4340 (11.11)     229;170   1,527.6298 (0.11)       1505           1
test_snappy_framed[asyoulik.txt-snappy]                   1,159.2780 (17.32)    1,648.2730 (10.68)    1,226.9825 (16.95)     69.1631 (7.06)     1,208.1210 (17.42)     62.4248 (19.57)      100;62     815.0076 (0.06)        801           1
test_snappy_framed[fireworks.jpeg-cramjam]                   82.0640 (1.23)       188.1610 (1.22)        93.4016 (1.29)      11.2305 (1.15)        89.0435 (1.28)       7.2770 (2.28)    1139;1063  10,706.4547 (0.78)       9054           1
test_snappy_framed[fireworks.jpeg-snappy]                   642.6270 (9.60)     1,080.5030 (7.00)       691.3958 (9.55)      46.4952 (4.75)       683.1805 (9.85)      41.4210 (12.99)     406;100   1,446.3496 (0.10)       1374           1
test_snappy_framed[geo.protodata-cramjam]                   207.2620 (3.10)       404.8150 (2.62)       221.4278 (3.06)      21.8556 (2.23)       213.4810 (3.08)      13.1203 (4.11)      504;529   4,516.1454 (0.33)       4301           1
test_snappy_framed[geo.protodata-snappy]                    727.0740 (10.86)    1,081.0720 (7.01)       774.2563 (10.70)     51.2997 (5.24)       760.7860 (10.97)     44.8170 (14.05)      134;97   1,291.5619 (0.09)       1094           1
test_snappy_framed[html-cramjam]                            209.9630 (3.14)       379.6720 (2.46)       223.6982 (3.09)      18.5359 (1.89)       217.6590 (3.14)      13.9565 (4.38)      501;360   4,470.3094 (0.32)       3931           1
test_snappy_framed[html-snappy]                             662.3100 (9.90)     1,010.6180 (6.55)       708.9370 (9.79)      51.5825 (5.27)       696.5880 (10.04)     47.8210 (14.99)     191;106   1,410.5626 (0.10)       1404           1
test_snappy_framed[html_x_4-cramjam]                        813.9490 (12.16)    1,234.0220 (8.00)       875.8345 (12.10)     64.5237 (6.59)       859.8725 (12.40)     51.4810 (16.14)      138;83   1,141.7682 (0.08)       1122           1
test_snappy_framed[html_x_4-snappy]                       2,665.8330 (39.83)    3,384.9470 (21.94)    2,865.7697 (39.59)    118.5848 (12.11)    2,843.3000 (41.00)    136.0955 (42.67)       97;13     348.9464 (0.03)        337           1
test_snappy_framed[kppkn.gtb-cramjam]                       569.1570 (8.50)       941.9720 (6.11)       612.0818 (8.46)      48.9091 (5.00)       598.0705 (8.62)      40.8400 (12.80)     145;100   1,633.7685 (0.12)       1518           1
test_snappy_framed[kppkn.gtb-snappy]                      1,418.3590 (21.19)    1,969.5570 (12.77)    1,541.2999 (21.29)     97.1448 (9.92)     1,517.0740 (21.88)     86.4275 (27.10)      132;59     648.8030 (0.05)        648           1
test_snappy_framed[lcet10.txt-cramjam]                    1,760.2000 (26.30)    2,350.9470 (15.24)    1,882.3709 (26.00)     99.5655 (10.17)    1,852.9640 (26.72)    107.8530 (33.82)      110;25     531.2449 (0.04)        473           1
test_snappy_framed[lcet10.txt-snappy]                     3,777.4390 (56.44)    4,641.5480 (30.09)    4,027.3592 (55.63)    167.2311 (17.08)    3,996.9500 (57.64)    213.6315 (66.98)        69;7     248.3017 (0.02)        233           1
test_snappy_framed[paper-100k.pdf-cramjam]                   79.9450 (1.19)       166.5010 (1.08)        87.5469 (1.21)       9.9207 (1.01)        84.0460 (1.21)       3.9595 (1.24)    1020;1387  11,422.4499 (0.83)       9037           1
test_snappy_framed[paper-100k.pdf-snappy]                   541.7030 (8.09)       832.1680 (5.39)       572.2008 (7.90)      37.8356 (3.86)       562.3680 (8.11)      40.0157 (12.55)      178;77   1,747.6383 (0.13)       1701           1
test_snappy_framed[plrabn12.txt-cramjam]                  2,624.9240 (39.22)    3,795.2400 (24.60)    2,784.9409 (38.47)    156.2531 (15.96)    2,745.7185 (39.59)    123.5140 (38.73)       37;29     359.0741 (0.03)        350           1
test_snappy_framed[plrabn12.txt-snappy]                   5,029.2020 (75.15)    6,492.6980 (42.08)    5,319.8571 (73.49)    213.0427 (21.76)    5,263.8185 (75.90)    233.6150 (73.25)        36;8     187.9750 (0.01)        186           1
test_snappy_framed[urls.10K-cramjam]                      2,206.7890 (32.97)    3,433.8090 (22.26)    2,489.4787 (34.39)    195.0847 (19.92)    2,530.7845 (36.49)    303.4110 (95.13)       132;3     401.6905 (0.03)        386           1
test_snappy_framed[urls.10K-snappy]                       5,900.9280 (88.17)    7,273.0480 (47.14)    6,206.1277 (85.73)    222.2105 (22.69)    6,145.8630 (88.62)    200.1830 (62.76)       32;10     161.1311 (0.01)        157           1
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
```

`make bench-snappy-raw`

```bash
---------------------------------------------------------------------------------------------------------- benchmark: 24 tests ----------------------------------------------------------------------------------------------------------
Name (time in us)                                             Min                   Max                  Mean              StdDev                Median                IQR            Outliers          OPS            Rounds  Iterations
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_snappy_raw[Mark.Twain-Tom.Sawyer.txt-cramjam]        52.4700 (3.41)       115.3440 (2.15)        56.0561 (3.36)       6.2831 (2.30)        53.4030 (3.35)      3.1860 (5.31)      497;515  17,839.2709 (0.30)       4861           1
test_snappy_raw[Mark.Twain-Tom.Sawyer.txt-snappy]         52.9360 (3.44)       110.8180 (2.07)        56.3054 (3.38)       6.1002 (2.23)        54.0580 (3.40)      3.0085 (5.01)    1021;1043  17,760.2996 (0.30)      11152           1
test_snappy_raw[alice29.txt-cramjam]                     611.5550 (39.69)      960.9500 (17.93)      646.3615 (38.78)     47.3504 (17.32)      634.9345 (39.88)    39.8180 (66.36)      115;86   1,547.1217 (0.03)       1582           1
test_snappy_raw[alice29.txt-snappy]                      599.5750 (38.91)      943.2070 (17.59)      630.4942 (37.82)     37.0993 (13.57)      623.3310 (39.15)    36.2815 (60.47)      104;66   1,586.0575 (0.03)       1433           1
test_snappy_raw[asyoulik.txt-cramjam]                    541.9610 (35.17)      900.4050 (16.80)      570.1357 (34.20)     37.2299 (13.62)      563.6110 (35.40)    35.4925 (59.16)      132;73   1,753.9685 (0.03)       1660           1
test_snappy_raw[asyoulik.txt-snappy]                     532.0560 (34.53)      829.2950 (15.47)      557.7337 (33.46)     31.0406 (11.36)      552.0020 (34.67)    33.1413 (55.24)      163;69   1,792.9705 (0.03)       1805           1
test_snappy_raw[fireworks.jpeg-cramjam]                   40.8240 (2.65)        86.5680 (1.61)        43.1699 (2.59)       4.9490 (1.81)        41.2540 (2.59)      1.9842 (3.31)      768;868  23,164.3098 (0.39)       8581           1
test_snappy_raw[fireworks.jpeg-snappy]                    15.4080 (1.0)         53.6070 (1.0)         16.6693 (1.0)        2.7334 (1.0)         15.9200 (1.0)       0.6000 (1.0)     2163;2428  59,990.6697 (1.0)       37582           1
test_snappy_raw[geo.protodata-cramjam]                   162.4500 (10.54)      319.1430 (5.95)       171.8914 (10.31)     16.4284 (6.01)       164.2120 (10.31)     9.8320 (16.39)     472;475   5,817.6275 (0.10)       5195           1
test_snappy_raw[geo.protodata-snappy]                    142.5780 (9.25)       289.1950 (5.39)       151.9618 (9.12)      14.7480 (5.40)       146.5465 (9.21)      8.7910 (14.65)     496;513   6,580.6001 (0.11)       5564           1
test_snappy_raw[html-cramjam]                            171.6680 (11.14)      353.2230 (6.59)       182.8124 (10.97)     16.0733 (5.88)       177.6490 (11.16)    10.3890 (17.32)     445;445   5,470.0872 (0.09)       4338           1
test_snappy_raw[html-snappy]                             156.5440 (10.16)      289.5440 (5.40)       166.6782 (10.00)     15.6719 (5.73)       159.3490 (10.01)     9.7975 (16.33)     555;545   5,999.5841 (0.10)       5796           1
test_snappy_raw[html_x_4-cramjam]                        687.9800 (44.65)    1,191.3240 (22.22)      732.5265 (43.94)     61.2486 (22.41)      719.6200 (45.20)    37.0050 (61.68)       73;73   1,365.1383 (0.02)       1154           1
test_snappy_raw[html_x_4-snappy]                         635.2680 (41.23)    1,000.9560 (18.67)      665.0148 (39.89)     33.7608 (12.35)      658.7670 (41.38)    38.5295 (64.22)      132;46   1,503.7259 (0.03)       1424           1
test_snappy_raw[kppkn.gtb-cramjam]                       513.0010 (33.29)      876.9870 (16.36)      538.6927 (32.32)     37.5722 (13.75)      529.6960 (33.27)    32.9270 (54.88)      126;76   1,856.3459 (0.03)       1614           1
test_snappy_raw[kppkn.gtb-snappy]                        504.0010 (32.71)      819.8180 (15.29)      531.0207 (31.86)     36.3322 (13.29)      521.1320 (32.73)    33.4015 (55.67)      136;80   1,883.1657 (0.03)       1605           1
test_snappy_raw[lcet10.txt-cramjam]                    1,621.1720 (105.22)   2,280.9690 (42.55)    1,702.4589 (102.13)    88.1738 (32.26)    1,684.9780 (105.84)   74.5165 (124.20)      53;40     587.3857 (0.01)        563           1
test_snappy_raw[lcet10.txt-snappy]                     1,590.3340 (103.21)   2,250.7950 (41.99)    1,675.8838 (100.54)    87.7583 (32.11)    1,661.6440 (104.37)   76.0752 (126.79)      52;35     596.7001 (0.01)        591           1
test_snappy_raw[paper-100k.pdf-cramjam]                   39.0380 (2.53)        83.4620 (1.56)        41.1788 (2.47)       4.3254 (1.58)        39.5485 (2.48)      2.2180 (3.70)      857;895  24,284.3381 (0.40)      10786           1
test_snappy_raw[paper-100k.pdf-snappy]                    20.1120 (1.31)       109.0120 (2.03)        21.8335 (1.31)       3.4175 (1.25)        20.9960 (1.32)      0.8850 (1.48)    1381;1503  45,801.1219 (0.76)      21602           1
test_snappy_raw[plrabn12.txt-cramjam]                  2,218.0820 (143.96)   3,440.0420 (64.17)    2,339.6884 (140.36)   136.2661 (49.85)    2,309.2965 (145.06)   95.7930 (159.66)      35;31     427.4073 (0.01)        354           1
test_snappy_raw[plrabn12.txt-snappy]                   2,316.6310 (150.35)   3,451.9990 (64.39)    2,440.0261 (146.38)   149.6083 (54.73)    2,407.0390 (151.20)   97.8185 (163.03)      30;27     409.8317 (0.01)        417           1
test_snappy_raw[urls.10K-cramjam]                      1,908.7650 (123.88)   2,981.4070 (55.62)    2,040.6282 (122.42)   160.7180 (58.80)    2,011.1260 (126.33)   81.4197 (135.70)      28;40     490.0452 (0.01)        423           1
test_snappy_raw[urls.10K-snappy]                       1,940.1910 (125.92)   3,101.1850 (57.85)    2,052.7867 (123.15)   146.2709 (53.51)    2,021.3160 (126.97)   89.7110 (149.52)      25;25     487.1427 (0.01)        394           1
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
```


##### Benchmarks for using `compress_into` and `decompress_into`
All variants except `lz4` for now, implement a `compress_into` and `decompress_into`
This is where, if you have a Python numpy array pre-allocated to the size of the
de/compress data output, we can place the bytes directly into that buffer.

Again, since basically no variants implement similar functionality as we saw in the Gzip `output_len`
benchmarks, this benchmark is specific to `cramjam`

```bash
------------------------------------------------------------------------------------------------------------------------ benchmark: 24 tests -------------------------------------------------------------------------------------------------------------------------
Name (time in us)                                                                          Min                   Max                  Mean              StdDev                Median                IQR            Outliers          OPS            Rounds  Iterations
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_cramjam_snappy_de_compress_into[Mark.Twain-Tom.Sawyer.txt-compress_into]          39.8240 (1.87)        85.1870 (1.49)        42.1991 (1.85)       4.7949 (1.36)        40.4410 (1.84)      1.5060 (2.22)    1579;1739  23,697.2108 (0.54)      18429           1
test_cramjam_snappy_de_compress_into[Mark.Twain-Tom.Sawyer.txt-decompress_into]        21.2630 (1.0)         57.2360 (1.0)         22.8284 (1.0)        3.5271 (1.0)         21.9730 (1.0)       0.6780 (1.0)       776;888  43,805.1557 (1.0)        9271           1
test_cramjam_snappy_de_compress_into[alice29.txt-compress_into]                       462.6910 (21.76)      812.9580 (14.20)      508.4205 (22.27)     37.7018 (10.69)      496.9830 (22.62)    26.8805 (39.65)     215;177   1,966.8760 (0.04)       1976           1
test_cramjam_snappy_de_compress_into[alice29.txt-decompress_into]                     190.4900 (8.96)       446.4370 (7.80)       210.2874 (9.21)      25.0303 (7.10)       202.8200 (9.23)     16.8353 (24.83)     274;244   4,755.3978 (0.11)       3229           1
test_cramjam_snappy_de_compress_into[asyoulik.txt-compress_into]                      405.8760 (19.09)      697.8110 (12.19)      430.5061 (18.86)     33.1445 (9.40)       421.2690 (19.17)    25.4420 (37.52)     187;147   2,322.8476 (0.05)       2260           1
test_cramjam_snappy_de_compress_into[asyoulik.txt-decompress_into]                    166.7260 (7.84)       345.2520 (6.03)       175.3985 (7.68)      15.2901 (4.34)       168.3880 (7.66)      9.8003 (14.45)     552;511   5,701.3018 (0.13)       5725           1
test_cramjam_snappy_de_compress_into[fireworks.jpeg-compress_into]                     44.3380 (2.09)        98.5800 (1.72)        47.4147 (2.08)       5.4927 (1.56)        45.6420 (2.08)      2.0510 (3.03)    1932;2103  21,090.4861 (0.48)      19150           1
test_cramjam_snappy_de_compress_into[fireworks.jpeg-decompress_into]                   30.1790 (1.42)        75.7750 (1.32)        32.0674 (1.40)       4.0658 (1.15)        30.7100 (1.40)      1.1880 (1.75)    2248;2630  31,184.3311 (0.71)      28385           1
test_cramjam_snappy_de_compress_into[geo.protodata-compress_into]                     121.2680 (5.70)       400.9240 (7.00)       130.3795 (5.71)      15.5604 (4.41)       125.4560 (5.71)      7.5100 (11.08)    808;1079   7,669.9154 (0.18)       7686           1
test_cramjam_snappy_de_compress_into[geo.protodata-decompress_into]                    61.8930 (2.91)       135.6580 (2.37)        65.3579 (2.86)       7.0477 (2.00)        62.6300 (2.85)      2.0933 (3.09)    1215;1502  15,300.3577 (0.35)      13125           1
test_cramjam_snappy_de_compress_into[html-compress_into]                              128.4720 (6.04)       257.3410 (4.50)       136.2710 (5.97)      12.7074 (3.60)       130.5210 (5.94)      7.5215 (11.09)     854;877   7,338.3187 (0.17)       7303           1
test_cramjam_snappy_de_compress_into[html-decompress_into]                             62.6920 (2.95)       173.2130 (3.03)        70.8147 (3.10)      11.3212 (3.21)        66.6290 (3.03)      6.4820 (9.56)    1799;1844  14,121.3670 (0.32)      12717           1
test_cramjam_snappy_de_compress_into[html_x_4-compress_into]                          511.0130 (24.03)      891.8790 (15.58)      549.7244 (24.08)     41.6672 (11.81)      542.8110 (24.70)    33.1573 (48.90)     150;109   1,819.0935 (0.04)       1447           1
test_cramjam_snappy_de_compress_into[html_x_4-decompress_into]                        258.6400 (12.16)      541.0200 (9.45)       292.8625 (12.83)     37.7322 (10.70)      276.6950 (12.59)    27.8205 (41.03)     338;317   3,414.5720 (0.08)       2543           1
test_cramjam_snappy_de_compress_into[kppkn.gtb-compress_into]                         359.4940 (16.91)      634.0840 (11.08)      385.2166 (16.87)     29.2549 (8.29)       381.5820 (17.37)    28.8383 (42.53)     265;155   2,595.9421 (0.06)       2735           1
test_cramjam_snappy_de_compress_into[kppkn.gtb-decompress_into]                       197.0240 (9.27)       405.3810 (7.08)       209.6119 (9.18)      21.6750 (6.15)       203.1435 (9.25)     12.2140 (18.01)     460;523   4,770.7209 (0.11)       4784           1
test_cramjam_snappy_de_compress_into[lcet10.txt-compress_into]                      1,220.0120 (57.38)    1,754.6500 (30.66)    1,354.5943 (59.34)     97.3167 (27.59)    1,317.4960 (59.96)    82.2825 (121.36)     126;69     738.2284 (0.02)        692           1
test_cramjam_snappy_de_compress_into[lcet10.txt-decompress_into]                      500.1370 (23.52)      904.8270 (15.81)      548.9960 (24.05)     51.5708 (14.62)      534.0950 (24.31)    34.9655 (51.57)     165;156   1,821.5069 (0.04)       1645           1
test_cramjam_snappy_de_compress_into[paper-100k.pdf-compress_into]                     38.5840 (1.81)       253.0600 (4.42)        41.1213 (1.80)       5.1050 (1.45)        39.6210 (1.80)      1.7125 (2.53)    1968;2146  24,318.3137 (0.56)      21464           1
test_cramjam_snappy_de_compress_into[paper-100k.pdf-decompress_into]                   30.2860 (1.42)        75.8210 (1.32)        32.1635 (1.41)       4.2167 (1.20)        30.7870 (1.40)      1.1800 (1.74)    2233;2458  31,091.0992 (0.71)      26565           1
test_cramjam_snappy_de_compress_into[plrabn12.txt-compress_into]                    1,650.9060 (77.64)    2,430.3730 (42.46)    1,770.4333 (77.55)     99.3839 (28.18)    1,755.6610 (79.90)    93.0350 (137.22)     104;35     564.8335 (0.01)        569           1
test_cramjam_snappy_de_compress_into[plrabn12.txt-decompress_into]                    670.7310 (31.54)    1,143.7440 (19.98)      713.4885 (31.25)     64.8742 (18.39)      695.7285 (31.66)    43.1620 (63.66)       72;69   1,401.5642 (0.03)       1078           1
test_cramjam_snappy_de_compress_into[urls.10K-compress_into]                        1,449.2240 (68.16)    2,248.9360 (39.29)    1,585.3133 (69.44)    128.9953 (36.57)    1,550.0310 (70.54)    93.1475 (137.39)      83;54     630.7902 (0.01)        607           1
test_cramjam_snappy_de_compress_into[urls.10K-decompress_into]                        611.5930 (28.76)    1,102.2170 (19.26)      660.0188 (28.91)     50.9816 (14.45)      650.2550 (29.59)    38.4440 (56.70)      133;94   1,515.1083 (0.03)       1110           1
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
```

#### Lz4

`make bench-lz4`

```bash
---------------------------------------------------------------------------------------------------------- benchmark: 24 tests ----------------------------------------------------------------------------------------------------------
Name (time in us)                                          Min                    Max                   Mean              StdDev                 Median                 IQR            Outliers         OPS            Rounds  Iterations
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_lz4[Mark.Twain-Tom.Sawyer.txt-cramjam]           265.4710 (1.29)      1,709.2960 (3.48)        283.5229 (1.30)      36.6529 (1.45)        273.4540 (1.29)      20.1355 (1.62)      288;307  3,527.0517 (0.77)       3672           1
test_lz4[Mark.Twain-Tom.Sawyer.txt-python-lz4]        206.1390 (1.0)         491.0620 (1.0)         218.6584 (1.0)       25.2966 (1.0)         212.6340 (1.0)       12.4433 (1.0)         71;88  4,573.3440 (1.0)         969           1
test_lz4[alice29.txt-cramjam]                       1,591.6270 (7.72)      2,422.1640 (4.93)      1,670.5685 (7.64)     105.3038 (4.16)      1,641.9690 (7.72)      69.4932 (5.58)        47;41    598.5986 (0.13)        583           1
test_lz4[alice29.txt-python-lz4]                    3,014.7940 (14.63)     5,390.9890 (10.98)     3,217.0799 (14.71)    294.7618 (11.65)     3,150.8370 (14.82)    147.8563 (11.88)       20;26    310.8409 (0.07)        315           1
test_lz4[asyoulik.txt-cramjam]                      1,341.9520 (6.51)      2,609.5330 (5.31)      1,435.5756 (6.57)     147.8273 (5.84)      1,403.8710 (6.60)      73.3415 (5.89)        39;52    696.5847 (0.15)        700           1
test_lz4[asyoulik.txt-python-lz4]                   2,624.6560 (12.73)     4,103.2770 (8.36)      2,832.4582 (12.95)    198.1849 (7.83)      2,785.6950 (13.10)    156.1410 (12.55)       42;25    353.0502 (0.08)        351           1
test_lz4[fireworks.jpeg-cramjam]                      279.7980 (1.36)      1,311.0030 (2.67)        312.3522 (1.43)      38.4700 (1.52)        300.8090 (1.41)      26.9838 (2.17)      231;178  3,201.5137 (0.70)       2419           1
test_lz4[fireworks.jpeg-python-lz4]                 2,608.3740 (12.65)     4,068.8360 (8.29)      2,757.1025 (12.61)    187.2245 (7.40)      2,709.8345 (12.74)     98.5295 (7.92)        26;28    362.6996 (0.08)        340           1
test_lz4[geo.protodata-cramjam]                       540.2170 (2.62)        954.5990 (1.94)        576.6946 (2.64)      59.2219 (2.34)        558.5890 (2.63)      40.7170 (3.27)      135;113  1,734.0201 (0.38)       1662           1
test_lz4[geo.protodata-python-lz4]                    670.0600 (3.25)      1,260.5120 (2.57)        706.9607 (3.23)      64.6132 (2.55)        691.1930 (3.25)      34.7968 (2.80)        62;67  1,414.5058 (0.31)       1371           1
test_lz4[html-cramjam]                                557.7070 (2.71)        952.2150 (1.94)        589.8092 (2.70)      40.2866 (1.59)        580.9055 (2.73)      41.6970 (3.35)       131;55  1,695.4636 (0.37)       1478           1
test_lz4[html-python-lz4]                             693.6250 (3.36)      1,243.8680 (2.53)        731.9760 (3.35)      57.6403 (2.28)        717.0350 (3.37)      42.7220 (3.43)        79;68  1,366.1650 (0.30)       1381           1
test_lz4[html_x_4-cramjam]                          1,834.1350 (8.90)      3,089.3180 (6.29)      1,947.9892 (8.91)     130.8457 (5.17)      1,913.9850 (9.00)      93.6955 (7.53)        41;30    513.3499 (0.11)        480           1
test_lz4[html_x_4-python-lz4]                       2,873.1570 (13.94)     4,251.4200 (8.66)      3,030.2486 (13.86)    164.9341 (6.52)      2,984.9600 (14.04)    127.3245 (10.23)       25;20    330.0059 (0.07)        301           1
test_lz4[kppkn.gtb-cramjam]                         1,491.9130 (7.24)      2,781.5860 (5.66)      1,570.2841 (7.18)      87.5343 (3.46)      1,553.1860 (7.30)      72.3630 (5.82)        49;32    636.8274 (0.14)        571           1
test_lz4[kppkn.gtb-python-lz4]                      3,199.8520 (15.52)     4,217.5750 (8.59)      3,359.6494 (15.36)    124.7223 (4.93)      3,325.6840 (15.64)    118.4477 (9.52)        39;21    297.6501 (0.07)        297           1
test_lz4[lcet10.txt-cramjam]                        4,124.9650 (20.01)     5,752.2620 (11.71)     4,313.8181 (19.73)    200.0237 (7.91)      4,261.9530 (20.04)    164.7980 (13.24)        16;9    231.8132 (0.05)        149           1
test_lz4[lcet10.txt-python-lz4]                     8,179.7110 (39.68)     9,336.4010 (19.01)     8,561.2170 (39.15)    252.1781 (9.97)      8,493.2420 (39.94)    365.4150 (29.37)        27;1    116.8058 (0.03)        115           1
test_lz4[paper-100k.pdf-cramjam]                      430.1570 (2.09)        892.4910 (1.82)        460.2170 (2.10)      50.9308 (2.01)        445.1600 (2.09)      32.3620 (2.60)      109;104  2,172.8878 (0.48)       1670           1
test_lz4[paper-100k.pdf-python-lz4]                 1,705.9020 (8.28)      3,126.1760 (6.37)      1,840.7896 (8.42)     179.6683 (7.10)      1,791.6345 (8.43)      88.1440 (7.08)        53;65    543.2451 (0.12)        570           1
test_lz4[plrabn12.txt-cramjam]                      5,020.0420 (24.35)     6,864.6530 (13.98)     5,292.4698 (24.20)    253.9889 (10.04)     5,205.3250 (24.48)    209.6257 (16.85)       18;16    188.9477 (0.04)        161           1
test_lz4[plrabn12.txt-python-lz4]                  11,864.6600 (57.56)    13,558.0060 (27.61)    12,295.0743 (56.23)    312.6359 (12.36)    12,212.9405 (57.44)    337.8520 (27.15)        19;4     81.3334 (0.02)         78           1
test_lz4[urls.10K-cramjam]                          4,636.7460 (22.49)     5,603.8480 (11.41)     4,867.3892 (22.26)    182.9029 (7.23)      4,814.5570 (22.64)    200.3785 (16.10)        27;6    205.4489 (0.04)        125           1
test_lz4[urls.10K-python-lz4]                       9,835.2580 (47.71)    12,131.1310 (24.70)    10,280.7427 (47.02)    417.8376 (16.52)    10,100.7300 (47.50)    393.7080 (31.64)        14;6     97.2692 (0.02)         74           1
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
```

#### Brotli

`make bench-brotli`

```bash
----------------------------------------------------------------------------------------------------- benchmark: 24 tests ------------------------------------------------------------------------------------------------------
Name (time in ms)                                         Min                   Max                  Mean             StdDev                Median                IQR            Outliers      OPS            Rounds  Iterations
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_brotli[Mark.Twain-Tom.Sawyer.txt-brotli]         19.3134 (1.05)        27.2349 (1.30)        21.3094 (1.10)      2.6975 (4.93)        19.9170 (1.03)      2.5291 (4.19)          4;2  46.9276 (0.91)         19           1
test_brotli[Mark.Twain-Tom.Sawyer.txt-cramjam]        18.4340 (1.0)         21.0191 (1.0)         19.3708 (1.0)       0.5474 (1.0)         19.3012 (1.0)       0.6043 (1.0)          19;1  51.6241 (1.0)          49           1
test_brotli[alice29.txt-brotli]                      224.1868 (12.16)      227.8789 (10.84)      225.7909 (11.66)     1.3771 (2.52)       225.6526 (11.69)     1.7266 (2.86)          2;0   4.4289 (0.09)          5           1
test_brotli[alice29.txt-cramjam]                     231.9518 (12.58)      234.0236 (11.13)      233.0551 (12.03)     0.9388 (1.72)       233.5518 (12.10)     1.6091 (2.66)          2;0   4.2908 (0.08)          5           1
test_brotli[asyoulik.txt-brotli]                     179.9550 (9.76)       184.0013 (8.75)       182.1853 (9.41)      1.4951 (2.73)       182.4221 (9.45)      2.1882 (3.62)          2;0   5.4889 (0.11)          6           1
test_brotli[asyoulik.txt-cramjam]                    184.3326 (10.00)      186.8581 (8.89)       185.3278 (9.57)      0.9119 (1.67)       185.2473 (9.60)      1.0866 (1.80)          2;0   5.3958 (0.10)          6           1
test_brotli[fireworks.jpeg-brotli]                    71.5389 (3.88)        75.3505 (3.58)        73.0897 (3.77)      0.9971 (1.82)        72.9035 (3.78)      0.9791 (1.62)          4;1  13.6818 (0.27)         14           1
test_brotli[fireworks.jpeg-cramjam]                   72.5284 (3.93)        79.9106 (3.80)        73.9391 (3.82)      1.8016 (3.29)        73.4397 (3.80)      0.7829 (1.30)          1;1  13.5246 (0.26)         14           1
test_brotli[geo.protodata-brotli]                    126.7453 (6.88)       131.5479 (6.26)       127.8292 (6.60)      1.5408 (2.81)       127.3805 (6.60)      0.6052 (1.00)          1;1   7.8229 (0.15)          8           1
test_brotli[geo.protodata-cramjam]                   130.8282 (7.10)       133.5629 (6.35)       131.9438 (6.81)      0.9135 (1.67)       131.6701 (6.82)      1.2637 (2.09)          3;0   7.5790 (0.15)          8           1
test_brotli[html-brotli]                             134.3089 (7.29)       136.8154 (6.51)       135.5654 (7.00)      0.9767 (1.78)       135.6640 (7.03)      1.7840 (2.95)          4;0   7.3765 (0.14)          8           1
test_brotli[html-cramjam]                            137.2950 (7.45)       141.9890 (6.76)       138.5814 (7.15)      1.6047 (2.93)       137.9258 (7.15)      1.2205 (2.02)          1;1   7.2160 (0.14)          7           1
test_brotli[html_x_4-brotli]                         164.2704 (8.91)       167.2311 (7.96)       165.5355 (8.55)      1.1562 (2.11)       165.5598 (8.58)      2.0072 (3.32)          3;0   6.0410 (0.12)          6           1
test_brotli[html_x_4-cramjam]                        167.8992 (9.11)       172.8526 (8.22)       169.7993 (8.77)      1.6606 (3.03)       169.4014 (8.78)      0.9248 (1.53)          2;1   5.8893 (0.11)          6           1
test_brotli[kppkn.gtb-brotli]                        427.2876 (23.18)      436.4801 (20.77)      431.6189 (22.28)     3.8362 (7.01)       430.7206 (22.32)     6.4873 (10.73)         2;0   2.3169 (0.04)          5           1
test_brotli[kppkn.gtb-cramjam]                       466.2677 (25.29)      497.4289 (23.67)      478.3085 (24.69)    13.1943 (24.10)      475.5884 (24.64)    21.5743 (35.70)         1;0   2.0907 (0.04)          5           1
test_brotli[lcet10.txt-brotli]                       745.3311 (40.43)      848.7560 (40.38)      799.6870 (41.28)    48.8617 (89.26)      809.2787 (41.93)    93.6578 (154.98)        2;0   1.2505 (0.02)          5           1
test_brotli[lcet10.txt-cramjam]                      762.7996 (41.38)      880.4882 (41.89)      798.9608 (41.25)    47.1400 (86.11)      788.5498 (40.85)    44.9762 (74.43)         1;0   1.2516 (0.02)          5           1
test_brotli[paper-100k.pdf-brotli]                   404.2915 (21.93)      409.0611 (19.46)      406.8449 (21.00)     1.9765 (3.61)       407.1359 (21.09)     3.3423 (5.53)          2;0   2.4579 (0.05)          5           1
test_brotli[paper-100k.pdf-cramjam]                  406.3386 (22.04)      410.8830 (19.55)      408.1782 (21.07)     1.8307 (3.34)       407.8163 (21.13)     2.7956 (4.63)          2;0   2.4499 (0.05)          5           1
test_brotli[plrabn12.txt-brotli]                     784.4900 (42.56)      797.3552 (37.93)      789.0102 (40.73)     4.9220 (8.99)       787.9514 (40.82)     4.6725 (7.73)          1;0   1.2674 (0.02)          5           1
test_brotli[plrabn12.txt-cramjam]                    793.1241 (43.02)      845.8696 (40.24)      816.3642 (42.14)    26.2341 (47.92)      802.2609 (41.57)    48.5658 (80.37)         2;0   1.2249 (0.02)          5           1
test_brotli[urls.10K-brotli]                       1,251.5425 (67.89)    1,265.7612 (60.22)    1,257.9783 (64.94)     6.7086 (12.26)    1,256.7268 (65.11)    12.8291 (21.23)         1;0   0.7949 (0.02)          5           1
test_brotli[urls.10K-cramjam]                      1,290.7796 (70.02)    1,365.9914 (64.99)    1,322.5113 (68.27)    33.0967 (60.46)    1,304.2875 (67.58)    54.4744 (90.14)         1;0   0.7561 (0.01)          5           1
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
```

#### ZSTD

`make bench-zstd`

```bash 
------------------------------------------------------------------------------------------------------- benchmark: 24 tests -------------------------------------------------------------------------------------------------------
Name (time in us)                                       Min                   Max                  Mean              StdDev                Median                 IQR            Outliers         OPS            Rounds  Iterations
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_zstd[Mark.Twain-Tom.Sawyer.txt-cramjam]       154.4260 (1.0)        429.8220 (1.61)       165.7084 (1.0)       18.0132 (1.0)        159.4600 (1.0)       11.8590 (1.0)       211;207  6,034.6953 (1.0)        1685           1
test_zstd[Mark.Twain-Tom.Sawyer.txt-zstd]          191.9860 (1.24)       267.6270 (1.0)        219.1654 (1.32)      28.9777 (1.61)       197.9910 (1.24)      56.6957 (4.78)         22;0  4,562.7633 (0.76)         53           1
test_zstd[alice29.txt-cramjam]                   1,362.2300 (8.82)     2,102.8580 (7.86)     1,439.4675 (8.69)      73.2922 (4.07)     1,422.7575 (8.92)      70.1800 (5.92)       134;36    694.7014 (0.12)        684           1
test_zstd[alice29.txt-zstd]                      1,315.1700 (8.52)     2,365.9580 (8.84)     1,403.9396 (8.47)     120.7466 (6.70)     1,372.8835 (8.61)      70.7280 (5.96)        72;76    712.2813 (0.12)        744           1
test_zstd[asyoulik.txt-cramjam]                  1,211.2850 (7.84)     1,841.2200 (6.88)     1,284.1431 (7.75)      77.5367 (4.30)     1,270.1210 (7.97)      59.2710 (5.00)        78;53    778.7294 (0.13)        757           1
test_zstd[asyoulik.txt-zstd]                     1,157.6700 (7.50)     1,653.1200 (6.18)     1,220.0159 (7.36)      65.1603 (3.62)     1,204.0080 (7.55)      55.9547 (4.72)        92;49    819.6615 (0.14)        805           1
test_zstd[fireworks.jpeg-cramjam]                  292.3470 (1.89)       602.9980 (2.25)       313.0014 (1.89)      33.5971 (1.87)       302.4510 (1.90)      20.7312 (1.75)      287;295  3,194.8734 (0.53)       3057           1
test_zstd[fireworks.jpeg-zstd]                     216.5420 (1.40)       452.4620 (1.69)       229.1745 (1.38)      22.7349 (1.26)       222.9190 (1.40)      12.9210 (1.09)      378;420  4,363.4868 (0.72)       3623           1
test_zstd[geo.protodata-cramjam]                   324.0560 (2.10)       672.1640 (2.51)       354.0909 (2.14)      42.7156 (2.37)       340.2680 (2.13)      27.8100 (2.35)      216;209  2,824.1338 (0.47)       2621           1
test_zstd[geo.protodata-zstd]                      281.7450 (1.82)       535.1640 (2.00)       300.6179 (1.81)      29.3579 (1.63)       291.3200 (1.83)      18.6490 (1.57)      247;242  3,326.4816 (0.55)       2894           1
test_zstd[html-cramjam]                            349.8810 (2.27)       769.5230 (2.88)       376.6673 (2.27)      43.1311 (2.39)       362.2320 (2.27)      27.6060 (2.33)      188;186  2,654.8631 (0.44)       2332           1
test_zstd[html-zstd]                               312.4120 (2.02)       580.8570 (2.17)       333.4397 (2.01)      32.0637 (1.78)       323.5910 (2.03)      21.6778 (1.83)      253;222  2,999.0433 (0.50)       2851           1
test_zstd[html_x_4-cramjam]                        476.8870 (3.09)       887.5280 (3.32)       537.3586 (3.24)      76.9432 (4.27)       509.1320 (3.19)      46.7175 (3.94)      115;122  1,860.9548 (0.31)        909           1
test_zstd[html_x_4-zstd]                           364.0010 (2.36)       797.9640 (2.98)       389.8506 (2.35)      37.9180 (2.11)       377.5145 (2.37)      28.5240 (2.41)      215;177  2,565.0855 (0.43)       2332           1
test_zstd[kppkn.gtb-cramjam]                     1,082.0570 (7.01)     1,696.9090 (6.34)     1,148.6073 (6.93)      72.4650 (4.02)     1,131.7090 (7.10)      57.8217 (4.88)        85;62    870.6196 (0.14)        749           1
test_zstd[kppkn.gtb-zstd]                        1,043.9460 (6.76)     1,771.5120 (6.62)     1,110.4534 (6.70)      81.5983 (4.53)     1,090.0220 (6.84)      54.9060 (4.63)        95;82    900.5331 (0.15)        879           1
test_zstd[lcet10.txt-cramjam]                    3,509.2670 (22.72)    5,409.0240 (20.21)    3,734.3465 (22.54)    230.2715 (12.78)    3,684.9145 (23.11)    163.8595 (13.82)       19;14    267.7845 (0.04)        268           1
test_zstd[lcet10.txt-zstd]                       3,387.3740 (21.94)    5,608.0490 (20.95)    3,595.1312 (21.70)    246.2549 (13.67)    3,542.5960 (22.22)    180.9382 (15.26)       19;12    278.1540 (0.05)        283           1
test_zstd[paper-100k.pdf-cramjam]                  488.0500 (3.16)       942.0480 (3.52)       520.3597 (3.14)      44.4527 (2.47)       508.0725 (3.19)      36.1535 (3.05)      166;116  1,921.7476 (0.32)       1900           1
test_zstd[paper-100k.pdf-zstd]                     479.8510 (3.11)       868.9010 (3.25)       520.1514 (3.14)      46.2761 (2.57)       509.5520 (3.20)      28.6118 (2.41)      197;190  1,922.5171 (0.32)       1977           1
test_zstd[plrabn12.txt-cramjam]                  4,742.2590 (30.71)    6,472.1400 (24.18)    5,019.8933 (30.29)    234.2066 (13.00)    4,958.0030 (31.09)    198.3953 (16.73)       26;12    199.2074 (0.03)        167           1
test_zstd[plrabn12.txt-zstd]                     4,586.0060 (29.70)    6,362.5020 (23.77)    4,846.4730 (29.25)    238.6297 (13.25)    4,803.3360 (30.12)    206.9840 (17.45)        26;9    206.3356 (0.03)        203           1
test_zstd[urls.10K-cramjam]                      4,455.0140 (28.85)    8,134.9550 (30.40)    4,870.4095 (29.39)    491.9910 (27.31)    4,727.1960 (29.65)    212.0393 (17.88)       23;28    205.3215 (0.03)        201           1
test_zstd[urls.10K-zstd]                         4,177.0250 (27.05)    5,455.3670 (20.38)    4,437.3242 (26.78)    210.9385 (11.71)    4,382.1610 (27.48)    231.2377 (19.50)       44;11    225.3610 (0.04)        227           1
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
```