zstd: faster next state update in BMI2 version of decode by WojciechMula · Pull Request #593 · klauspost/compress (original) (raw)

Use the Go-code approach: use single getBits to obtain three bitfields.

Results from an Ice Lake machine. Not big improvement, but still something.

benchmark                                                                 old ns/op     new ns/op     delta
BenchmarkDecoder_DecoderSmall/kppkn.gtb.zst-16                            3538269       3464588       -2.08%
BenchmarkDecoder_DecoderSmall/geo.protodata.zst-16                        767535        762036        -0.72%
BenchmarkDecoder_DecoderSmall/plrabn12.txt.zst-16                         12020124      11753140      -2.22%
BenchmarkDecoder_DecoderSmall/lcet10.txt.zst-16                           9370142       9150443       -2.34%
BenchmarkDecoder_DecoderSmall/asyoulik.txt.zst-16                         2888949       2847418       -1.44%
BenchmarkDecoder_DecoderSmall/alice29.txt.zst-16                          3611946       3523666       -2.44%
BenchmarkDecoder_DecoderSmall/html_x_4.zst-16                             1431293       1416360       -1.04%
BenchmarkDecoder_DecoderSmall/paper-100k.pdf.zst-16                       196917        191536        -2.73%
BenchmarkDecoder_DecoderSmall/fireworks.jpeg.zst-16                       127251        125210        -1.60%
BenchmarkDecoder_DecoderSmall/urls.10K.zst-16                             11395615      11235287      -1.41%
BenchmarkDecoder_DecoderSmall/html.zst-16                                 944829        924662        -2.13%
BenchmarkDecoder_DecoderSmall/comp-data.bin.zst-16                        64173         64119         -0.08%
BenchmarkDecoder_DecodeAll/kppkn.gtb.zst-16                               282174        280770        -0.50%
BenchmarkDecoder_DecodeAll/geo.protodata.zst-16                           66167         66359         +0.29%
BenchmarkDecoder_DecodeAll/plrabn12.txt.zst-16                            922002        932301        +1.12%
BenchmarkDecoder_DecodeAll/lcet10.txt.zst-16                              683173        684177        +0.15%
BenchmarkDecoder_DecodeAll/asyoulik.txt.zst-16                            247548        248853        +0.53%
BenchmarkDecoder_DecodeAll/alice29.txt.zst-16                             274773        274472        -0.11%
BenchmarkDecoder_DecodeAll/html_x_4.zst-16                                246462        246202        -0.11%
BenchmarkDecoder_DecodeAll/paper-100k.pdf.zst-16                          20594         20605         +0.05%
BenchmarkDecoder_DecodeAll/fireworks.jpeg.zst-16                          11307         11306         -0.01%
BenchmarkDecoder_DecodeAll/urls.10K.zst-16                                1012849       1003953       -0.88%
BenchmarkDecoder_DecodeAll/html.zst-16                                    71019         71430         +0.58%
BenchmarkDecoder_DecodeAll/comp-data.bin.zst-16                           8022          7990          -0.40%
BenchmarkDecoder_DecodeAllFiles/Mark.Twain-Tom.Sawyer.txt/fastest-16      881685        881563        -0.01%
BenchmarkDecoder_DecodeAllFiles/Mark.Twain-Tom.Sawyer.txt/default-16      745784        753593        +1.05%
BenchmarkDecoder_DecodeAllFiles/Mark.Twain-Tom.Sawyer.txt/better-16       763830        769607        +0.76%
BenchmarkDecoder_DecodeAllFiles/Mark.Twain-Tom.Sawyer.txt/best-16         723014        726033        +0.42%
BenchmarkDecoder_DecodeAllFiles/e.txt/fastest-16                          9196          9197          +0.01%
BenchmarkDecoder_DecodeAllFiles/e.txt/default-16                          249892        246681        -1.28%
BenchmarkDecoder_DecodeAllFiles/e.txt/better-16                           214009        213535        -0.22%
BenchmarkDecoder_DecodeAllFiles/e.txt/best-16                             148169        147211        -0.65%
BenchmarkDecoder_DecodeAllFiles/fse-artifact3.bin/fastest-16              3679          3675          -0.11%
BenchmarkDecoder_DecodeAllFiles/fse-artifact3.bin/default-16              3151          3142          -0.29%
BenchmarkDecoder_DecodeAllFiles/fse-artifact3.bin/better-16               4038          4041          +0.07%
BenchmarkDecoder_DecodeAllFiles/fse-artifact3.bin/best-16                 11088         11087         -0.01%
BenchmarkDecoder_DecodeAllFiles/gettysburg.txt/fastest-16                 4295          4267          -0.65%
BenchmarkDecoder_DecodeAllFiles/gettysburg.txt/default-16                 6941          6938          -0.04%
BenchmarkDecoder_DecodeAllFiles/gettysburg.txt/better-16                  6944          6947          +0.04%
BenchmarkDecoder_DecodeAllFiles/gettysburg.txt/best-16                    6846          6814          -0.47%
BenchmarkDecoder_DecodeAllFiles/html.txt/fastest-16                       49690         49631         -0.12%
BenchmarkDecoder_DecodeAllFiles/html.txt/default-16                       50346         50250         -0.19%
BenchmarkDecoder_DecodeAllFiles/html.txt/better-16                        48131         47985         -0.30%
BenchmarkDecoder_DecodeAllFiles/html.txt/best-16                          50142         50017         -0.25%
BenchmarkDecoder_DecodeAllFiles/pi.txt/fastest-16                         9196          9195          -0.01%
BenchmarkDecoder_DecodeAllFiles/pi.txt/default-16                         248131        245482        -1.07%
BenchmarkDecoder_DecodeAllFiles/pi.txt/better-16                          212266        211689        -0.27%
BenchmarkDecoder_DecodeAllFiles/pi.txt/best-16                            147942        147473        -0.32%
BenchmarkDecoder_DecodeAllFiles/pngdata.bin/fastest-16                    28247         28132         -0.41%
BenchmarkDecoder_DecodeAllFiles/pngdata.bin/default-16                    33284         33307         +0.07%
BenchmarkDecoder_DecodeAllFiles/pngdata.bin/better-16                     25149         25136         -0.05%
BenchmarkDecoder_DecodeAllFiles/pngdata.bin/best-16                       34645         34499         -0.42%
BenchmarkDecoder_DecodeAllFiles/sharnd.out/fastest-16                     9195          9192          -0.03%
BenchmarkDecoder_DecodeAllFiles/sharnd.out/default-16                     9190          9190          +0.00%
BenchmarkDecoder_DecodeAllFiles/sharnd.out/better-16                      9193          9200          +0.08%
BenchmarkDecoder_DecodeAllFiles/sharnd.out/best-16                        9198          9192          -0.07%
BenchmarkDecoder_DecodeAllFilesP/Mark.Twain-Tom.Sawyer.txt/fastest-16     97922         96367         -1.59%
BenchmarkDecoder_DecodeAllFilesP/Mark.Twain-Tom.Sawyer.txt/default-16     94087         92098         -2.11%
BenchmarkDecoder_DecodeAllFilesP/Mark.Twain-Tom.Sawyer.txt/better-16      89399         87983         -1.58%
BenchmarkDecoder_DecodeAllFilesP/Mark.Twain-Tom.Sawyer.txt/best-16        90856         89094         -1.94%
BenchmarkDecoder_DecodeAllFilesP/e.txt/fastest-16                         1040          1049          +0.87%
BenchmarkDecoder_DecodeAllFilesP/e.txt/default-16                         27730         27366         -1.31%
BenchmarkDecoder_DecodeAllFilesP/e.txt/better-16                          23469         23280         -0.81%
BenchmarkDecoder_DecodeAllFilesP/e.txt/best-16                            16864         16860         -0.02%
BenchmarkDecoder_DecodeAllFilesP/fse-artifact3.bin/fastest-16             520           449           -13.68%
BenchmarkDecoder_DecodeAllFilesP/fse-artifact3.bin/default-16             558           429           -23.12%
BenchmarkDecoder_DecodeAllFilesP/fse-artifact3.bin/better-16              490           460           -6.00%
BenchmarkDecoder_DecodeAllFilesP/fse-artifact3.bin/best-16                866           859           -0.82%
BenchmarkDecoder_DecodeAllFilesP/gettysburg.txt/fastest-16                570           567           -0.47%
BenchmarkDecoder_DecodeAllFilesP/gettysburg.txt/default-16                708           710           +0.35%
BenchmarkDecoder_DecodeAllFilesP/gettysburg.txt/better-16                 706           705           -0.09%
BenchmarkDecoder_DecodeAllFilesP/gettysburg.txt/best-16                   734           733           -0.12%
BenchmarkDecoder_DecodeAllFilesP/html.txt/fastest-16                      7398          7315          -1.12%
BenchmarkDecoder_DecodeAllFilesP/html.txt/default-16                      7520          7428          -1.22%
BenchmarkDecoder_DecodeAllFilesP/html.txt/better-16                       7188          7109          -1.10%
BenchmarkDecoder_DecodeAllFilesP/html.txt/best-16                         7542          7490          -0.69%
BenchmarkDecoder_DecodeAllFilesP/pi.txt/fastest-16                        1058          1042          -1.51%
BenchmarkDecoder_DecodeAllFilesP/pi.txt/default-16                        28040         27632         -1.46%
BenchmarkDecoder_DecodeAllFilesP/pi.txt/better-16                         23286         23142         -0.62%
BenchmarkDecoder_DecodeAllFilesP/pi.txt/best-16                           16856         16860         +0.02%
BenchmarkDecoder_DecodeAllFilesP/pngdata.bin/fastest-16                   3629          3614          -0.41%
BenchmarkDecoder_DecodeAllFilesP/pngdata.bin/default-16                   3667          3651          -0.44%
BenchmarkDecoder_DecodeAllFilesP/pngdata.bin/better-16                    2892          2880          -0.41%
BenchmarkDecoder_DecodeAllFilesP/pngdata.bin/best-16                      3840          3833          -0.18%
BenchmarkDecoder_DecodeAllFilesP/sharnd.out/fastest-16                    1038          1042          +0.39%
BenchmarkDecoder_DecodeAllFilesP/sharnd.out/default-16                    1039          1043          +0.38%
BenchmarkDecoder_DecodeAllFilesP/sharnd.out/better-16                     1036          1033          -0.29%
BenchmarkDecoder_DecodeAllFilesP/sharnd.out/best-16                       1041          1035          -0.58%
BenchmarkDecoder_DecodeAllParallel/kppkn.gtb.zst-16                       37367         36741         -1.68%
BenchmarkDecoder_DecodeAllParallel/geo.protodata.zst-16                   9301          9226          -0.81%
BenchmarkDecoder_DecodeAllParallel/plrabn12.txt.zst-16                    121253        118642        -2.15%
BenchmarkDecoder_DecodeAllParallel/lcet10.txt.zst-16                      91335         89550         -1.95%
BenchmarkDecoder_DecodeAllParallel/asyoulik.txt.zst-16                    31263         30758         -1.62%
BenchmarkDecoder_DecodeAllParallel/alice29.txt.zst-16                     39573         38752         -2.07%
BenchmarkDecoder_DecodeAllParallel/html_x_4.zst-16                        31527         31476         -0.16%
BenchmarkDecoder_DecodeAllParallel/paper-100k.pdf.zst-16                  2747          2740          -0.25%
BenchmarkDecoder_DecodeAllParallel/fireworks.jpeg.zst-16                  1267          1254          -1.03%
BenchmarkDecoder_DecodeAllParallel/urls.10K.zst-16                        109008        107497        -1.39%
BenchmarkDecoder_DecodeAllParallel/html.zst-16                            9900          9803          -0.98%
BenchmarkDecoder_DecodeAllParallel/comp-data.bin.zst-16                   1090          1084          -0.55%

benchmark                                                                 old MB/s     new MB/s     speedup
BenchmarkDecoder_DecoderSmall/kppkn.gtb.zst-16                            416.75       425.61       1.02x
BenchmarkDecoder_DecoderSmall/geo.protodata.zst-16                        1236.04      1244.96      1.01x
BenchmarkDecoder_DecoderSmall/plrabn12.txt.zst-16                         320.70       327.99       1.02x
BenchmarkDecoder_DecoderSmall/lcet10.txt.zst-16                           364.35       373.10       1.02x
BenchmarkDecoder_DecoderSmall/asyoulik.txt.zst-16                         346.64       351.70       1.01x
BenchmarkDecoder_DecoderSmall/alice29.txt.zst-16                          336.86       345.30       1.03x
BenchmarkDecoder_DecoderSmall/html_x_4.zst-16                             2289.40      2313.54      1.01x
BenchmarkDecoder_DecoderSmall/paper-100k.pdf.zst-16                       4160.13      4277.00      1.03x
BenchmarkDecoder_DecoderSmall/fireworks.jpeg.zst-16                       7738.58      7864.74      1.02x
BenchmarkDecoder_DecoderSmall/urls.10K.zst-16                             492.88       499.92       1.01x
BenchmarkDecoder_DecoderSmall/html.zst-16                                 867.04       885.95       1.02x
BenchmarkDecoder_DecoderSmall/comp-data.bin.zst-16                        508.13       508.56       1.00x
BenchmarkDecoder_DecodeAll/kppkn.gtb.zst-16                               653.21       656.48       1.01x
BenchmarkDecoder_DecodeAll/geo.protodata.zst-16                           1792.24      1787.07      1.00x
BenchmarkDecoder_DecodeAll/plrabn12.txt.zst-16                            522.62       516.85       0.99x
BenchmarkDecoder_DecodeAll/lcet10.txt.zst-16                              624.66       623.75       1.00x
BenchmarkDecoder_DecodeAll/asyoulik.txt.zst-16                            505.68       503.02       0.99x
BenchmarkDecoder_DecodeAll/alice29.txt.zst-16                             553.51       554.12       1.00x
BenchmarkDecoder_DecodeAll/html_x_4.zst-16                                1661.92      1663.68      1.00x
BenchmarkDecoder_DecodeAll/paper-100k.pdf.zst-16                          4972.43      4969.68      1.00x
BenchmarkDecoder_DecodeAll/fireworks.jpeg.zst-16                          10886.31     10887.11     1.00x
BenchmarkDecoder_DecodeAll/urls.10K.zst-16                                693.18       699.32       1.01x
BenchmarkDecoder_DecodeAll/html.zst-16                                    1441.86      1433.57      0.99x
BenchmarkDecoder_DecodeAll/comp-data.bin.zst-16                           508.09       510.11       1.00x
BenchmarkDecoder_DecodeAllFiles/Mark.Twain-Tom.Sawyer.txt/fastest-16      440.03       440.09       1.00x
BenchmarkDecoder_DecodeAllFiles/Mark.Twain-Tom.Sawyer.txt/default-16      520.21       514.82       0.99x
BenchmarkDecoder_DecodeAllFiles/Mark.Twain-Tom.Sawyer.txt/better-16       507.92       504.11       0.99x
BenchmarkDecoder_DecodeAllFiles/Mark.Twain-Tom.Sawyer.txt/best-16         536.59       534.36       1.00x
BenchmarkDecoder_DecodeAllFiles/e.txt/fastest-16                          10875.00     10872.87     1.00x
BenchmarkDecoder_DecodeAllFiles/e.txt/default-16                          400.18       405.39       1.01x
BenchmarkDecoder_DecodeAllFiles/e.txt/better-16                           467.28       468.32       1.00x
BenchmarkDecoder_DecodeAllFiles/e.txt/best-16                             674.92       679.32       1.01x
BenchmarkDecoder_DecodeAllFiles/fse-artifact3.bin/fastest-16              1118.87      1119.99      1.00x
BenchmarkDecoder_DecodeAllFiles/fse-artifact3.bin/default-16              1306.44      1309.88      1.00x
BenchmarkDecoder_DecodeAllFiles/fse-artifact3.bin/better-16               1019.38      1018.48      1.00x
BenchmarkDecoder_DecodeAllFiles/fse-artifact3.bin/best-16                 371.21       371.24       1.00x
BenchmarkDecoder_DecodeAllFiles/gettysburg.txt/fastest-16                 360.39       362.77       1.01x
BenchmarkDecoder_DecodeAllFiles/gettysburg.txt/default-16                 223.01       223.11       1.00x
BenchmarkDecoder_DecodeAllFiles/gettysburg.txt/better-16                  222.94       222.84       1.00x
BenchmarkDecoder_DecodeAllFiles/gettysburg.txt/best-16                    226.10       227.19       1.00x
BenchmarkDecoder_DecodeAllFiles/html.txt/fastest-16                       895.09       896.16       1.00x
BenchmarkDecoder_DecodeAllFiles/html.txt/default-16                       883.42       885.12       1.00x
BenchmarkDecoder_DecodeAllFiles/html.txt/better-16                        924.08       926.89       1.00x
BenchmarkDecoder_DecodeAllFiles/html.txt/best-16                          887.02       889.25       1.00x
BenchmarkDecoder_DecodeAllFiles/pi.txt/fastest-16                         10874.41     10875.76     1.00x
BenchmarkDecoder_DecodeAllFiles/pi.txt/default-16                         403.03       407.37       1.01x
BenchmarkDecoder_DecodeAllFiles/pi.txt/better-16                          471.12       472.41       1.00x
BenchmarkDecoder_DecodeAllFiles/pi.txt/best-16                            675.96       678.11       1.00x
BenchmarkDecoder_DecodeAllFiles/pngdata.bin/fastest-16                    1812.57      1819.96      1.00x
BenchmarkDecoder_DecodeAllFiles/pngdata.bin/default-16                    1538.27      1537.22      1.00x
BenchmarkDecoder_DecodeAllFiles/pngdata.bin/better-16                     2035.91      2036.92      1.00x
BenchmarkDecoder_DecodeAllFiles/pngdata.bin/best-16                       1477.86      1484.12      1.00x
BenchmarkDecoder_DecodeAllFiles/sharnd.out/fastest-16                     10876.32     10879.64     1.00x
BenchmarkDecoder_DecodeAllFiles/sharnd.out/default-16                     10882.29     10881.82     1.00x
BenchmarkDecoder_DecodeAllFiles/sharnd.out/better-16                      10878.19     10869.60     1.00x
BenchmarkDecoder_DecodeAllFiles/sharnd.out/best-16                        10872.67     10879.41     1.00x
BenchmarkDecoder_DecodeAllFilesP/Mark.Twain-Tom.Sawyer.txt/fastest-16     3961.96      4025.90      1.02x
BenchmarkDecoder_DecodeAllFilesP/Mark.Twain-Tom.Sawyer.txt/default-16     4123.46      4212.50      1.02x
BenchmarkDecoder_DecodeAllFilesP/Mark.Twain-Tom.Sawyer.txt/better-16      4339.69      4409.56      1.02x
BenchmarkDecoder_DecodeAllFilesP/Mark.Twain-Tom.Sawyer.txt/best-16        4270.11      4354.55      1.02x
BenchmarkDecoder_DecodeAllFilesP/e.txt/fastest-16                         96150.10     95315.78     0.99x
BenchmarkDecoder_DecodeAllFilesP/e.txt/default-16                         3606.34      3654.30      1.01x
BenchmarkDecoder_DecodeAllFilesP/e.txt/better-16                          4261.03      4295.69      1.01x
BenchmarkDecoder_DecodeAllFilesP/e.txt/best-16                            5930.07      5931.46      1.00x
BenchmarkDecoder_DecodeAllFilesP/fse-artifact3.bin/fastest-16             7918.33      9173.05      1.16x
BenchmarkDecoder_DecodeAllFilesP/fse-artifact3.bin/default-16             7381.36      9601.93      1.30x
BenchmarkDecoder_DecodeAllFilesP/fse-artifact3.bin/better-16              8401.98      8938.65      1.06x
BenchmarkDecoder_DecodeAllFilesP/fse-artifact3.bin/best-16                4750.45      4789.99      1.01x
BenchmarkDecoder_DecodeAllFilesP/gettysburg.txt/fastest-16                2715.61      2728.85      1.00x
BenchmarkDecoder_DecodeAllFilesP/gettysburg.txt/default-16                2187.89      2180.39      1.00x
BenchmarkDecoder_DecodeAllFilesP/gettysburg.txt/better-16                 2193.74      2195.81      1.00x
BenchmarkDecoder_DecodeAllFilesP/gettysburg.txt/best-16                   2108.53      2111.09      1.00x
BenchmarkDecoder_DecodeAllFilesP/html.txt/fastest-16                      6012.03      6080.29      1.01x
BenchmarkDecoder_DecodeAllFilesP/html.txt/default-16                      5914.58      5987.87      1.01x
BenchmarkDecoder_DecodeAllFilesP/html.txt/better-16                       6187.51      6256.08      1.01x
BenchmarkDecoder_DecodeAllFilesP/html.txt/best-16                         5897.13      5937.99      1.01x
BenchmarkDecoder_DecodeAllFilesP/pi.txt/fastest-16                        94559.93     95962.77     1.01x
BenchmarkDecoder_DecodeAllFilesP/pi.txt/default-16                        3566.45      3619.13      1.01x
BenchmarkDecoder_DecodeAllFilesP/pi.txt/better-16                         4294.64      4321.36      1.01x
BenchmarkDecoder_DecodeAllFilesP/pi.txt/best-16                           5932.61      5931.45      1.00x
BenchmarkDecoder_DecodeAllFilesP/pngdata.bin/fastest-16                   14107.13     14169.07     1.00x
BenchmarkDecoder_DecodeAllFilesP/pngdata.bin/default-16                   13964.23     14025.04     1.00x
BenchmarkDecoder_DecodeAllFilesP/pngdata.bin/better-16                    17703.73     17776.93     1.00x
BenchmarkDecoder_DecodeAllFilesP/pngdata.bin/best-16                      13333.43     13358.75     1.00x
BenchmarkDecoder_DecodeAllFilesP/sharnd.out/fastest-16                    96306.48     95976.00     1.00x
BenchmarkDecoder_DecodeAllFilesP/sharnd.out/default-16                    96238.15     95896.84     1.00x
BenchmarkDecoder_DecodeAllFilesP/sharnd.out/better-16                     96558.62     96776.02     1.00x
BenchmarkDecoder_DecodeAllFilesP/sharnd.out/best-16                       96102.84     96635.70     1.01x
BenchmarkDecoder_DecodeAllParallel/kppkn.gtb.zst-16                       4932.70      5016.74      1.02x
BenchmarkDecoder_DecodeAllParallel/geo.protodata.zst-16                   12750.37     12853.04     1.01x
BenchmarkDecoder_DecodeAllParallel/plrabn12.txt.zst-16                    3974.00      4061.49      1.02x
BenchmarkDecoder_DecodeAllParallel/lcet10.txt.zst-16                      4672.40      4765.53      1.02x
BenchmarkDecoder_DecodeAllParallel/asyoulik.txt.zst-16                    4004.09      4069.75      1.02x
BenchmarkDecoder_DecodeAllParallel/alice29.txt.zst-16                     3843.28      3924.71      1.02x
BenchmarkDecoder_DecodeAllParallel/html_x_4.zst-16                        12992.11     13013.04     1.00x
BenchmarkDecoder_DecodeAllParallel/paper-100k.pdf.zst-16                  37276.90     37370.52     1.00x
BenchmarkDecoder_DecodeAllParallel/fireworks.jpeg.zst-16                  97177.32     98180.77     1.01x
BenchmarkDecoder_DecodeAllParallel/urls.10K.zst-16                        6440.67      6531.22      1.01x
BenchmarkDecoder_DecodeAllParallel/html.zst-16                            10343.44     10446.00     1.01x
BenchmarkDecoder_DecodeAllParallel/comp-data.bin.zst-16                   3737.84      3760.76      1.01x