coreutils/src/uu/head/BENCHMARKING.md
Roy Ivy III 7a760cae99 refactor/polish ~ re-normalize whitespace
* minimize inconsistent/invisible whitespace

- consistent indentation (either spaces-only, tabs, *or* tabs with following spaces [for indentation])
- no internal/invisible tabs
- no trailing whitespace
- EOF EOLNs
2022-01-09 21:35:39 -06:00

1.5 KiB

Benchmarking to measure performance

To compare the performance of the uutils version of head with the GNU version of head, you can use a benchmarking tool like hyperfine. On Ubuntu 18.04 or later, you can install hyperfine by running

sudo apt-get install hyperfine

Next, build the head binary under the release profile:

cargo build --release -p uu_head

Now, get a text file to test head on. I used the Complete Works of William Shakespeare, which is in the public domain in the United States and most other parts of the world.

wget -O shakespeare.txt https://www.gutenberg.org/files/100/100-0.txt

This particular file has about 170,000 lines, each of which is no longer than 96 characters:

$ wc -lL shakespeare.txt
170592      96 shakespeare.txt

You could use files of different shapes and sizes to test the performance of head in different situations. For a larger file, you could download a database dump of Wikidata or some related files that the Wikimedia project provides. For example, this file contains about 130 million lines.

Finally, you can compare the performance of the two versions of head by running, for example,

hyperfine \
    "head -n 100000 shakespeare.txt" \
    "target/release/head -n 100000 shakespeare.txt"