10 releases (breaking)

0.9.0 May 24, 2023
0.8.0 Apr 20, 2023
0.7.0 Apr 8, 2023
0.6.0 Apr 6, 2023
0.1.1 Feb 21, 2023

#114 in Profiling

Download history 36/week @ 2023-02-18 6/week @ 2023-02-25 55/week @ 2023-03-04 22/week @ 2023-03-11 6/week @ 2023-03-18 7/week @ 2023-03-25 28/week @ 2023-04-01 52/week @ 2023-04-08 31/week @ 2023-04-15 6/week @ 2023-04-22 27/week @ 2023-05-06 12/week @ 2023-05-13 33/week @ 2023-05-20 18/week @ 2023-05-27

90 downloads per month

MIT license

1.5K SLoC


A command-line and GUI benchmarking tool and graph generator.


  • Providing statistics (eg. min, max, standard deviation) across a custom number of runs.
  • Support for a warmup run.
  • Export a set number of runs to CSV.
  • GUI runner with file selection and command-line arguments able to be reorganised.
  • Exporter from CSV to CSV/HTML using plotly.


The program is launched using the CLI with 4 main programs that can be launched:

Command-Line Name Function
exporter-gui Deals with exporting in a GUI program
runner-gui Deals with benching in a GUI program
exporter-cli Deals with exporting in a CLI interface
runner-cli Deals with benching in a CLI interface

The GUI programs all require active user input, and the CLI programs all require no user input and can be used in scripting programs.

Runner CLI

The runner can do a basic CLI benchmark just using:

precipice runner-cli -b "program"

And if you need CLI args, they all get added in one object

precipice runner-cli -b "echo" -c "'hello world'"

You can do a custom number of runs using

precipice runner-cli -b "program" -r 2500

The default trace name and file name are just the binary with the runs, and that can be customised further with the options available at --help.

Exporter CLI

The exporter can export from any number of files, by adding more -i flags - for example:

precipice exporter-cli -i "bench_1.csv" -i "bench_2.csv"

By default, the file name to export to is precipice_bench and it exports to a plotly.js document, but you can change this:

precipice exporter-cli -i "bench_1.csv" -o "bench_1" # exports to bench_1.html
precipice exporter-cli -i "bench_1.csv" -i "bench_2.csv" -t csv # exports to precipice_bench.csv

The main utility in exporting to CSV is getting multiple traces into one file.


I don't have any installers, and this isn't on any package managers right now. The only way to run it is to get the binary from the releases page and get it into your path, or to download it using the rust dependency manager:

cargo install precipice


~514K SLoC