From 8f6a6d4ed92dbce9f484d41bb05c55dc42c10559 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Sun, 27 Aug 2023 10:58:19 +0200 Subject: add DEVELOPMENT.md --- DEVELOPMENT.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 DEVELOPMENT.md (limited to 'DEVELOPMENT.md') diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 0000000..07c65a7 --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,48 @@ +There's a Makefile with useful shortcuts to build the project in the "build/" +directory: + + make build + +This command makes a CMake build directory in build/cmake/ and executes `make` +there. + +The default is to build using clang in `Debug` configuration. +You can choose a different compiler and configuration like so: + + make build COMPILER=gcc CONFIGURATION=Release + +### Testing + +After building, you can run the "test suite" (depends on Pytest). + + make test + +### Code coverage + +You can generate a code coverage report (depends on `gcovr`) in +build/coverage/: + + make coverage + +The latest code coverage report for the `master` branch can be found at +https://egor-tensin.github.io/cimple/coverage/. + +### Flame graphs + +Some performance analysis can be done by looking at flame graphs. +Generate them after building the project (depends on `perf` & [FlameGraph]): + + make test/perf + +[FlameGraph]: https://github.com/brendangregg/FlameGraph + +This will generate two flame graphs in build/flame_graphs/; they stress +slightly different parts of the system: + +* [flame_graph_output_simple.svg] for a CI script with short output, +* [flame_graph_output_long.svg] for a CI script with long output. + +[flame_graph_output_simple.svg]: https://egor-tensin.github.io/cimple/flame_graphs/flame_graph_output_simple.svg +[flame_graph_output_long.svg]: https://egor-tensin.github.io/cimple/flame_graphs/flame_graph_output_long.svg + +Follow the links above to view the latest flame graphs for the `master` branch. -- cgit v1.2.3