TODO (#118):
- see/mention/interlink (even more ...) presentation about intrusive & visual profiling for Prague
C++meetup here - how to include it in yor project - short
cmake's "fetch content" example - add short example of how to intrusively instrument code (maybe snippet of some example?!)
- screenshot of how it looks like when displayed, e.g. via Perfetto
Right now, only the Trace Event Format format is currently used & available, and seems sufficient.
TODO (#119) explore more & compare with:
NVIDIA Nsight SystemsTracy- TODO would it be feasible to implement
Tracy'sinternal format too?! - using
Tracyprofiler to display saved traces
- TODO would it be feasible to implement
- TODO explore this nice article
clang xray...
Perfetto Trace Processor- Doesn't seem to provide API for tracing itself, only processing results.
- Citation: "The Trace Processor is a C++ library (/src/trace_processor) that ingests traces encoded in a wide variety of formats ..." => TODO explore more or not?
Examples are here. They should sufficiently demonstrate how to use cxxet in your code. By the way, they are also used for testing cxxet itself, so they assure that it works as intended the tests require!
LGPLv3 -> COPYING & COPYING.lesser
Your application can be proprietary, commercial, or under any license. You can link cxxet dynamically or statically without releasing your application's source code, as long as You:
- include copy of
LGPLv3license with distribution, preservecxxet's copyright notices and allow users to replacecxxet(provide your object files or ensure dynamic linking remains possible); - if you modify
cxxetitself, those modifications must be released underLGPLv3.
Contributions are more than welcome! See CONTRIBUTING.md for details.
Further details about provided convenience scripts are in scripts/README.md.
When having bash available, use cxxet_manage.bash for compilation, testing, preparing docker image(s) for development, and so on. Good starting point is to display what is available, e.g.:
$ ./cxxet_manage.bash --help
...
$ ./cxxet_manage.bash compile --help
...If you don't have all tools/compilers/... available, and don't want to install them "directly" (see their list in respective Dockerfiles), corresponding docker image(s) can be built & used:
# `XYZ` is valid image name or `--help`/`-h`:
$ ./cxxet_manage.bash docker_build_image XYZ # builds given image (or displays help ...)
...
$ ./cxxet_manage.bash docker_interactive XYZ # enters interactive (bash) shell in it (or displays help ...)
...
# all further commands are executed inside via the `cxxet_manage.bash` script too, e.g.:
$ ./cxxet_manage.bash compile ...
...To reopen this project in VS Code using devcontainer, first build the image & generate the config. file:
# `XYZ` is valid image name
$ ./cxxet_manage.bash docker_build_image XYZ
...
$ ./cxxet_manage.bash docker_devcontainer XYZ
...After this, VS Code will offer to reopen the project in the container.
TODO ... using google/benchmark ...
First generate some data (or use present one), then adjust the source code and generate "challenger" data, e.g.:
$ ./cxxet_manage.bash benchmarks large --out-dir /tmp/baseline -n 10 -c
...
# adjust source code, recompile, etc. and measure it again:
$ ./cxxet_manage.bash benchmarks large --out-dir /tmp/challenger -n 10 -c
...Then compare the results, e.g.:
$ bin/release/cxxet_large_bench_compare --verbose /tmp/baseline/large.json /tmp/challenger/large.json | less -M
...and decide whether the changes were for better or not.
Maybe create github issues for those?
- clean up this paragraph (#123)
- benchmarking
- try reimplementing the
cxxet::mark::completeto don't hold all the data, but "save" them immediately and update end time (duration) onsubmit/d-tor (by holding only pointer to this particular record)
- try reimplementing the
- add more output formats (e.g. implied by this conversation: https://chatgpt.com/share/681b2833-c728-8003-9e28-a4e1c1c35196)
- read e.g. https://www.chromium.org/developers/how-tos/trace-event-profiling-tool/ and fix how it's saved -> e.g.
"stacked" markers are properly displayed
- read e.g. https://www.chromium.org/developers/how-tos/trace-event-profiling-tool/ and fix how it's saved -> e.g.
