1This directory contains some selected benchmark runs on this crate. Each 2subdirectory corresponds to a single run. In general, each run should contain a 3complete set of benchmarks defined at the time they were run. 4 5Each sub-directory has two files: 6 7* `raw.json` is the raw JSON export of the benchmark data. This is best read 8 with `critcmp` (see below), which can slice and dice it any number of ways. 9* `README.md` contains details about the benchmarking environment along with 10 two tables: one table comparing memchr implementations and another comparing 11 memmem implementations. The tables are generated via the `make-pretty-tables` 12 script in this directory. (This is not all benchmarks. It leaves out reverse 13 searching and the `memchr2` and `memchr3` benchmarks.) 14 15The tables in the README are primarily meant to make the data _somewhat_ easy 16to read in GitHub. But in reality, `critcmp` is the best way to read the 17benchmarks. For example, let's say you wanted to compare only this crate's 18memmem implementation and std's substring search routine, but only benchmarks 19which differ by 5% or more. `critcmp` can do this for you: 20 21``` 22critcmp runs/2021-04-30_initial/raw.json -g 'memmem/[^/]+/(.*)' -f '/(krate|stud)/' -t5 23``` 24 25(NOTE: Consult the README in the corresponding run directory for the `critcmp` 26version used to generate the `raw.json` file. You may need to use the same 27version of `critcmp` to read it.) 28 29This command does four things: 30 31* Reads the benchmark data from `runs/2021-04-30_initial/raw.json`. 32* Compares all benchmarks against each other where the values of the capturing 33 groups in `memmem/[^/]+/(.*)` are equivalent in the benchmark names. 34* Limits the benchmark comparisons to those corresponding to either this 35 crate's implementation (named `krate`) or std's implementation (named 36 `stud`). 37* Only prints comparisons with a difference of 5% or more. 38 39For more info on specific benchmarks, see the source code and `data` directory. 40