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
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
```