REPOBENCH(1)

πŸ’– REPOBENCH(1) β€” the repobench manual, bestie edition ✨

okay so you know reposurgeon? this is its little benchmarking sidekick. repobench is the section-1 command that generates and/or displays reposurgeon benchmarks. gen z certified, slay. πŸ‘‘


🌸 SYNOPSIS 🌸

repobench [-h] [-c cmd] [-p datafiles] [-o datafiles] [-s runtime|heap|highwater] [dumpfile min step max]

✨ OPTIONS ✨

  • -c cmd β€” hand cmd over to reposurgeon before it does the stream-file read. spice it up, y'know?
  • -h β€” shows you the option help. classic. 🫢
  • -p β€” calls the gnuplot interpreter so you get an actual graph, like a little picture of your suffering.
  • -o β€” instead of gnuplot-on-screen, generates the graph in SVG format straight to stdout. ship it.
  • -s style β€” picks which statistic shows up in the graph. the default is runtime. options are runtime, heap, highwater.

πŸ¦‹ DESCRIPTION πŸ¦‹

This script has two modes: generate and display. They're separated on purpose, bestie β€” that way the expensive result from generate mode can just. sit there. chilling. ready to be visualized over and over again without you paying the price twice. it's giving "meal prep" energy fr fr. πŸ“

🌈 GENERATE MODE 🌈

In generate mode (which is the default, no cap), it runs reposurgeon multiple times with different readlimit values and writes out performance statistics for each run to a datafile. The name of that datafile gets reported to you. πŸŽ€

In display (-p) mode, a benchmark-data file is sent to gnuplot to make a graph. There's an alternate display mode (with -o) that ships the graph to standard output as an SVG.

Generate mode takes four arguments: the dump file to read, followed by the min, step, and max values to use for readlimit. The dump file may be specified as a path relative to the current directory. All this leaves the following files in the current directory:

  • A logfile for each conversion run. Extension .log.
  • A single data file with lines correlating elapsed time to two measures of memory. One entry per run in the readlimit loop. Extension .dat.

The data will be recorded in a file named after the current git revision β€” as an aid to comparing multiple historical revisions of the code. iykyk. πŸ’…

New data is simply appended to the end of the data file, so it's useful to run this script multiple times with different step values. For example, the GCC repository had ~280k revisions. Running this first with a step of 50k to see a rough graph in a shorter amount of time, followed by runs with smaller step values, such as 10k or 1k, is recommended. πŸ‘‘

⚠️ heads up: generate mode uses sudo to instruct the kernel to drop everything from the file system cache between runs. yes, sudo. yes, the whole cache. the drama is real. πŸ’€

To change the behavior of reposurgeon you can user the -c option to pass it a command-line argument.

🧚 DISPLAY MODE 🧚

Display mode with a single file argument takes a previously generated datafile and renders it as a graph. Curve fitting is attempted. Use the -p option for interactive gnuplot, or the -o option to ship an SVG to stdout. The -s option can be used to choose which statistic to graph. ⭐

Giving multiple files with display mode suppresses curve fitting and produces a comparative graph. The -o, -p, and -s options are interpreted. This mode is useful in checking for performance regressions β€” literally a vibe check for your code's speed. πŸ”₯


🌟 SEE ALSO 🌟

reposurgeon(1).


πŸ’œ AUTHOR πŸ’œ

Daniel Brooks, Eric S. Raymond. This tool is distributed with reposurgeon; see the project <http://www.catb.org/~esr/reposurgeon> page" .


and that's the whole page, bestie β€” no cap, every flag and every footnote accounted for. 🩷 this was a REPOBENCH(1) page, dated 2025-10-29, and that date? iconic. periodt. βœ¨πŸ’…πŸŒΈ

πŸ“¦ where this page comes from