1These benchmark inputs were taken from the sliceslice [project benchmarks][1]. 2 3These inputs drive two benchmarks, one on short haystacks and the other on long 4haystacks, with a slightly unusual but interesting configuration. Neither of 5these benchmarks include the time it takes to build a searcher. They only 6measure actual search time. 7 8The short haystack benchmark starts by loading all of the words in `words.txt` 9into memory and sorting them in ascending order by their length. Then, a 10substring searcher is created for each of these words in the same order. The 11actual benchmark consists of executing each searcher once on every needle that 12appears after it in the list. In essence, this benchmark tests how quickly the 13implementation can deal with tiny haystacks. The results of this benchmark tend 14to come down to how much overhead the implementation has. In other words, this 15benchmark tests latency. 16 17The long haystack benchmark has a setup similar to the short haystack 18benchmark, except it also loads the contents of `i386.txt` into memory. The 19actual benchmark itself executes each of the searchers built (from `words.txt`) 20on the `i386.txt` haystack. This benchmark, executing on a much longer 21haystack, tests throughput as opposed to latency across a wide variety of 22needles. 23 24[1]: https://github.com/cloudflare/sliceslice-rs 25