11 releases

0.2.1 Dec 21, 2021
0.2.0 Dec 21, 2021
0.1.8 Dec 18, 2021
0.1.7 Dec 1, 2020
0.1.5 Nov 29, 2020

#384 in Profiling

Apache-2.0

58KB
1.5K SLoC

cargo-profile

Profiling rust program made easy.

Installation

cargo install cargo-profile

Features

instrument

Supported os: mac os.

Fork of https://github.com/cmyr/cargo-instruments, but uses cargo cli for compilation to avoid removing cache.

Usage

cargo profile instruments -t time bench --bench parser

flamegraph

Supported os: linux, mac os.

Usage

# Just use cargo's syntax
cargo profile flamegraph bench --lib
# If you have a my_bench in benches directory, you can do
cargo profile flamegraph bench --bench my_bench

bin-path

Binaries built by cargo have some random strings as a suffix, and it makes invoking files generated by cargo harder. Here comes cargo profile bin-path to aid it.

Usage

perf record `cargo profile bin-path bench --bench fixture`

cpu time profiling

You can get cpu time usage per function on mac os using the command below.

(For linux, you can use perf directly, although I'll add linux aupport soon.)

Usage

cargo profile cpu per-fn bench --bench fixture

trace

Note: It does not support dtrace and perf yet. Same as above, I'll implement it if there's a need.

xctrace

xctrace is a tool to profile applications on

Usage

cargo profile trace xctrace bench --lib

cargo profile trace xctrace bench --bench my_bench

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~10MB
~172K SLoC