aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_prof
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-07-11 02:39:44 +0100
committerAleksey Kladov <[email protected]>2020-07-11 02:41:01 +0100
commit5e25000763e97ef006dd05ac40198ae59e3f03c3 (patch)
tree7933c8914e42915c4cb62cba318a6731de2f808b /crates/ra_prof
parente7ba7f47a79a2881cf208ef9d944609e8fd4eec9 (diff)
Profiling example
Diffstat (limited to 'crates/ra_prof')
-rw-r--r--crates/ra_prof/Cargo.toml2
-rw-r--r--crates/ra_prof/src/lib.rs7
2 files changed, 7 insertions, 2 deletions
diff --git a/crates/ra_prof/Cargo.toml b/crates/ra_prof/Cargo.toml
index eabfcebb0..db9b59ed6 100644
--- a/crates/ra_prof/Cargo.toml
+++ b/crates/ra_prof/Cargo.toml
@@ -24,4 +24,4 @@ cpu_profiler = []
24# Uncomment to enable for the whole crate graph 24# Uncomment to enable for the whole crate graph
25# default = [ "backtrace" ] 25# default = [ "backtrace" ]
26# default = [ "jemalloc" ] 26# default = [ "jemalloc" ]
27# default = [ "cpu_profiler" ] 27default = [ "cpu_profiler" ]
diff --git a/crates/ra_prof/src/lib.rs b/crates/ra_prof/src/lib.rs
index 0fb468375..7163a8424 100644
--- a/crates/ra_prof/src/lib.rs
+++ b/crates/ra_prof/src/lib.rs
@@ -66,7 +66,8 @@ impl Drop for Scope {
66/// 2. Build with `cpu_profiler` feature. 66/// 2. Build with `cpu_profiler` feature.
67/// 3. Tun the code, the *raw* output would be in the `./out.profile` file. 67/// 3. Tun the code, the *raw* output would be in the `./out.profile` file.
68/// 4. Install pprof for visualization (https://github.com/google/pprof). 68/// 4. Install pprof for visualization (https://github.com/google/pprof).
69/// 5. Use something like `pprof -svg target/release/rust-analyzer ./out.profile` to see the results. 69/// 5. Bump sampling frequency to once per ms: `export CPUPROFILE_FREQUENCY=1000`
70/// 6. Use something like `pprof -svg target/release/rust-analyzer ./out.profile` to see the results.
70/// 71///
71/// For example, here's how I run profiling on NixOS: 72/// For example, here's how I run profiling on NixOS:
72/// 73///
@@ -74,6 +75,10 @@ impl Drop for Scope {
74/// $ nix-shell -p gperftools --run \ 75/// $ nix-shell -p gperftools --run \
75/// 'cargo run --release -p rust-analyzer -- parse < ~/projects/rustbench/parser.rs > /dev/null' 76/// 'cargo run --release -p rust-analyzer -- parse < ~/projects/rustbench/parser.rs > /dev/null'
76/// ``` 77/// ```
78///
79/// See this diff for how to profile completions:
80///
81/// https://github.com/rust-analyzer/rust-analyzer/pull/5306
77#[derive(Debug)] 82#[derive(Debug)]
78pub struct CpuProfiler { 83pub struct CpuProfiler {
79 _private: (), 84 _private: (),