]> git.ipfire.org Git - thirdparty/zstd.git/commit
[regression] Add dictionary support 1434/head
authorNick Terrell <terrelln@fb.com>
Sat, 1 Dec 2018 01:16:19 +0000 (17:16 -0800)
committerNick Terrell <terrelln@fb.com>
Sat, 1 Dec 2018 02:23:01 +0000 (18:23 -0800)
commite859862341a7e120ba56773e3c1f5d7bf9911b66
tree7dea74b48160949a4ea23e8e0652c0c4f000caec
parent386c9ab58a3cd3d01682ecd4b16e2884f542ef3d
[regression] Add dictionary support

Dictionaries are prebuilt and saved as part of the data object.
The config decides whether or not to use the dictionary if it is
available. Configs that require dictionaries are only run with
data that have dictionaries. The method will skip configs that are
irrelevant, so for example ZSTD_compress() will skip configs with
dictionaries.

I've also trimmed the silesia source to 1MB per file (12 MB total),
and added 500 samples from the github data set with a dictionary.

I've intentionally added an extra line to the `results.csv` to make
the nightly build fail, so that we can see how CircleCI reports it.

Full list of changes:

* Add pre-built dictionaries to the data.
* Add `use_dictionary` and `no_pledged_src_size` flags to the config.
* Add a config using a dictionary for every level.
* Add a config that specifies no pledged source size.
* Support dictionaries and streaming in the `zstdcli` method.
* Add a context-reuse method using `ZSTD_compressCCtx()`.
* Clean up the formatting of the `results.csv` file to align columns.
* Add `--data`, `--config`, and `--method` flags to constrain each
  to a particular value. This is useful for debugging a failure
  or debugging a particular config/method/data.
tests/regression/config.c
tests/regression/config.h
tests/regression/data.c
tests/regression/data.h
tests/regression/method.c
tests/regression/results.csv
tests/regression/test.c