Persil is a minimal and simple library for profiling events.
It's based on rust's measureme and
is just a simple, but powerful layer ontop of measureme
.
Add this to your Cargo.toml
[dependencies]
persil = "0.1.0"
If you have cargo-edit installed
cargo add persil
``rust
// You have to call
initat the start of the program,
// with the name of your application.
//
// Your results will be stored in
./trace/{app-name}-{pid}`
persil::init("my_application");
// To store the results in a custom path, use the init_with_path
function.
persil::initwithpath("./");
// This will enable the profiler. // // If you don't call this method, there will be results emitted. persil::enable();
// trace
will start tracing an event.
// An event is composed of a category
and a label
.
// The trace
function returns guard, that will stop tracing,
// if it's dropped.
{
let profiler = persil::trace("Parsing", "Expression");
let expr = parseexpression().unwrap();
// _profiler
is dropped here so it will stop tracing
// at the end of this scope
}
let profiler = persil::trace("Parsing", "Item"); parse_item().unwrap();
// You can also drop the guard manually to stop tracing. drop(profiler); ```
Analyze the results
To analye and display the results, you can use one of the tools in the measureme repo.
For example to use summarize
, just do:
```sh
summarize trace/my_application ```
For more information checkout the measureme repository.