nomeata / gipeda

Git Performance Dashboard
MIT License
78 stars 26 forks source link

Gipeda -- the Git Performance Dashboard

What is gipeda?

Gipeda is a a tool that presents data from your program’s benchmark suite (or any other source), with nice tables and shiny graphs.

It is only a frontend and does not help with or care about collecting the data. So it is up to you whether you have a polling shell script loop, a post-commit hook or a elaborate jenkins setup. As long as the performance data ends up in the logs/ directory, gipeda is happy.

Gipeda produces static pages. In fact, the (single) html file and the accompagning JavaScript code is completely static. Gipeda just generates a large number of json files. This has the advantage of easy deployment: Just put gipeda in your webspace of copy the files to some static web hosting and you are done. This putts very little load on your server, is cache friendly and has no security problems.

Do you want to see it live? Check out these:

Setting it up

Gipeda does not work without at least some logs, so let's add them.

Adding data

Gipeda expects to find performance data in the logs directory, where the data for each Git revision is named <gitrev>.log, e.g. logs/0279a7d327a3b962ffa93a95d47ea5d9ee31e25c.log.

Handling data

Criterion data

Gipeda has built-in functionality for handling Criterion output, if your benchmarks use the Criterion framework.

Just put Criterion logs directly in the logs directory (named appropriately), and copy the binary/log2csv script to the base directory of this repo, e.g.

cp binary/log2csv .

Custom or non-Criterion data

For non-Criterion data (text base logs, JUnit reports, or anything else), you will need to make your own script log2csv and put it in the base directory of this repo. This script should expect the filename of a log on the command line, and should output a CSV file for that Git revision, of the form

benchmark1;1000
benchmark2;20.123
benchmark3;0

Running gipeda

With everything in place, you can now run

./gipeda

and it will create a bunch of JSON files in site/out/. With ./gipeda -j4 you can parallelize it.

You should do this everytime a new log file appears in logs/. You should also make sure your repository is up-to-date, e.g. by running git -C repository pull or, if it is a bare clone, git -C repository fetch origin "+refs/heads/*:refs/heads/*" --prune.

Using gipeda

Finally, you simply point your browser to the site/index.html. The page should be mostly self-explanatory. If you don’t see anything, it might be because of the filter in the top-right corner. Try to enable all buttons, even the =.

To host this on a webserver, just put the site/ directory in your webspace.

Hacking on gipeda

Gipeda doesn't do much; it mostly assembles the data and creates nice reports. The rough pipeline is as follows:

Bugs, Code, Contact

Please reports bugs and missing features at the GitHub bugtracker. This is also where you can find the source code.

Gipeda was written by Joachim Breitner and is licensed under a permissive MIT license.