diff options
author | Aleksey Kladov <[email protected]> | 2020-07-11 02:39:44 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-07-11 02:41:01 +0100 |
commit | 5e25000763e97ef006dd05ac40198ae59e3f03c3 (patch) | |
tree | 7933c8914e42915c4cb62cba318a6731de2f808b /crates/ra_prof | |
parent | e7ba7f47a79a2881cf208ef9d944609e8fd4eec9 (diff) |
Profiling example
Diffstat (limited to 'crates/ra_prof')
-rw-r--r-- | crates/ra_prof/Cargo.toml | 2 | ||||
-rw-r--r-- | crates/ra_prof/src/lib.rs | 7 |
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" ] | 27 | default = [ "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)] |
78 | pub struct CpuProfiler { | 83 | pub struct CpuProfiler { |
79 | _private: (), | 84 | _private: (), |