switch to em-dash
This commit is contained in:
parent
5571290aac
commit
f1e087db37
|
|
@ -7,7 +7,7 @@ This is a guide for how to profile rustc with [perf](https://perf.wiki.kernel.or
|
||||||
- Get a clean checkout of rust-lang/master, or whatever it is you want to profile.
|
- Get a clean checkout of rust-lang/master, or whatever it is you want to profile.
|
||||||
- Set the following settings in your `config.toml`:
|
- Set the following settings in your `config.toml`:
|
||||||
- `debuginfo-lines = true`
|
- `debuginfo-lines = true`
|
||||||
- `use-jemalloc = false` -- lets you do memory use profiling with valgrind
|
- `use-jemalloc = false` — lets you do memory use profiling with valgrind
|
||||||
- leave everything else the defaults
|
- leave everything else the defaults
|
||||||
- Run `./x.py build` to get a full build
|
- Run `./x.py build` to get a full build
|
||||||
- Make a rustup toolchain (let's call it `rust-prof`) pointing to that result
|
- Make a rustup toolchain (let's call it `rust-prof`) pointing to that result
|
||||||
|
|
@ -117,7 +117,7 @@ the `cargo rustc` command, like so:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
touch src/lib.rs
|
touch src/lib.rs
|
||||||
CARGO_INCREMENTAL=0 perf record -F99 --call-graph dwarf cargo rustc --profile check --lib -- -Zborrowck=mir
|
CARGO_INCREMENTAL=0 perf record -F99 --call-graph dwarf cargo rustc --profile check --lib — -Zborrowck=mir
|
||||||
```
|
```
|
||||||
|
|
||||||
[pf]: https://github.com/nikomatsakis/perf-focus
|
[pf]: https://github.com/nikomatsakis/perf-focus
|
||||||
|
|
@ -178,7 +178,7 @@ samples where `do_mir_borrowck` was on the stack: in this case, 29%.
|
||||||
currently executes `perf script` (perhaps there is a better
|
currently executes `perf script` (perhaps there is a better
|
||||||
way...). I've sometimes found that `perf script` outputs C++ mangled
|
way...). I've sometimes found that `perf script` outputs C++ mangled
|
||||||
names. This is annoying. You can tell by running `perf script |
|
names. This is annoying. You can tell by running `perf script |
|
||||||
head` yourself -- if you see names like `5rustc6middle` instead of
|
head` yourself — if you see names like `5rustc6middle` instead of
|
||||||
`rustc::middle`, then you have the same problem. You can solve this
|
`rustc::middle`, then you have the same problem. You can solve this
|
||||||
by doing:
|
by doing:
|
||||||
|
|
||||||
|
|
@ -191,7 +191,7 @@ should mostly convert those names into a more friendly format. The
|
||||||
`--from-stdin` flag to `perf focus` tells it to get its data from
|
`--from-stdin` flag to `perf focus` tells it to get its data from
|
||||||
stdin, rather than executing `perf focus`. We should make this more
|
stdin, rather than executing `perf focus`. We should make this more
|
||||||
convenient (at worst, maybe add a `c++filt` option to `perf focus`, or
|
convenient (at worst, maybe add a `c++filt` option to `perf focus`, or
|
||||||
just always use it -- it's pretty harmless).
|
just always use it — it's pretty harmless).
|
||||||
|
|
||||||
### Example: How much time does MIR borrowck spend solving traits?
|
### Example: How much time does MIR borrowck spend solving traits?
|
||||||
|
|
||||||
|
|
@ -209,7 +209,7 @@ Percentage : 0%
|
||||||
Here we used the `..` operator to ask "how often do we have
|
Here we used the `..` operator to ask "how often do we have
|
||||||
`do_mir_borrowck` on the stack and then, later, some fn whose name
|
`do_mir_borrowck` on the stack and then, later, some fn whose name
|
||||||
begins with `rusc::traits`?" (basically, code in that module). It
|
begins with `rusc::traits`?" (basically, code in that module). It
|
||||||
turns out the answer is "almost never" -- only 12 samples fit that
|
turns out the answer is "almost never" — only 12 samples fit that
|
||||||
description (if you ever see *no* samples, that often indicates your
|
description (if you ever see *no* samples, that often indicates your
|
||||||
query is messed up).
|
query is messed up).
|
||||||
|
|
||||||
|
|
@ -264,7 +264,7 @@ function and not some callee of that function** (self). Usually
|
||||||
### Relative percentages
|
### Relative percentages
|
||||||
|
|
||||||
By default, all in perf-focus are relative to the **total program
|
By default, all in perf-focus are relative to the **total program
|
||||||
execution**. This is useful to help you keep perspective -- often as
|
execution**. This is useful to help you keep perspective — often as
|
||||||
we drill down to find hot spots, we can lose sight of the fact that,
|
we drill down to find hot spots, we can lose sight of the fact that,
|
||||||
in terms of overall program execution, this "hot spot" is actually not
|
in terms of overall program execution, this "hot spot" is actually not
|
||||||
important. It also ensures that percentages between different queries
|
important. It also ensures that percentages between different queries
|
||||||
|
|
@ -273,7 +273,8 @@ are easily compared against one another.
|
||||||
That said, sometimes it's useful to get relative percentages, so `perf
|
That said, sometimes it's useful to get relative percentages, so `perf
|
||||||
focus` offers a `--relative` option. In this case, the percentages are
|
focus` offers a `--relative` option. In this case, the percentages are
|
||||||
listed only for samples that match (vs all samples). So for example we
|
listed only for samples that match (vs all samples). So for example we
|
||||||
could get our percentages relative to the borrowck itself like so:
|
could get our percentages relative to the borrowck itself
|
||||||
|
like so:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
> perf focus '{do_mir_borrowck}' --tree-callees --relative --tree-max-depth 1 --tree-min-percent 5
|
> perf focus '{do_mir_borrowck}' --tree-callees --relative --tree-max-depth 1 --tree-min-percent 5
|
||||||
|
|
@ -290,7 +291,7 @@ Tree
|
||||||
: | rustc_mir::dataflow::do_dataflow (8% total, 1% self) [...]
|
: | rustc_mir::dataflow::do_dataflow (8% total, 1% self) [...]
|
||||||
```
|
```
|
||||||
|
|
||||||
Here you see that `compute_regions` came up as "47% total" -- that
|
Here you see that `compute_regions` came up as "47% total" — that
|
||||||
means that 47% of `do_mir_borrowck` is spent in that function. Before,
|
means that 47% of `do_mir_borrowck` is spent in that function. Before,
|
||||||
we saw 20% -- that's because `do_mir_borrowck` itself is only 43% of
|
we saw 20% — that's because `do_mir_borrowck` itself is only 43% of
|
||||||
the total time (and `.47 * .43 = .20`).
|
the total time (and `.47 * .43 = .20`).
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue