mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
opt-in jemalloc
This commit is contained in:
parent
3432c4366f
commit
2ee08098a6
5 changed files with 23 additions and 3 deletions
|
@ -184,7 +184,10 @@ To see logs from the language server, set `RUST_LOG=info` env variable. To see
|
|||
all communication between the server and the client, use
|
||||
`RUST_LOG=gen_lsp_server=debug` (this will print quite a bit of stuff).
|
||||
|
||||
There's `Status of rust-analyzer` command which prints common high-level debug info.
|
||||
There's `rust-analyzer: status` command which prints common high-level debug
|
||||
info. In particular, it prints info about memory usage of various data
|
||||
structures, and, if compiled with jemalloc support (`cargo install --features
|
||||
jemalloc`), the summary statistic about the heap.
|
||||
|
||||
To run tests, just `cargo test`.
|
||||
|
||||
|
|
|
@ -14,8 +14,9 @@ fst = "0.3.1"
|
|||
rustc-hash = "1.0"
|
||||
parking_lot = "0.7.0"
|
||||
unicase = "2.2.0"
|
||||
jemallocator = "0.1.9"
|
||||
jemalloc-ctl = "0.2.0"
|
||||
|
||||
jemallocator = { version = "0.1.9", optional = true }
|
||||
jemalloc-ctl = { version = "0.2.0", optional = true }
|
||||
|
||||
ra_syntax = { path = "../ra_syntax" }
|
||||
ra_ide_api_light = { path = "../ra_ide_api_light" }
|
||||
|
@ -26,3 +27,6 @@ test_utils = { path = "../test_utils" }
|
|||
|
||||
[dev-dependencies]
|
||||
insta = "0.5.1"
|
||||
|
||||
[features]
|
||||
jemalloc = [ "jemallocator", "jemalloc-ctl" ]
|
||||
|
|
|
@ -61,6 +61,7 @@ pub use ra_db::{
|
|||
|
||||
// We use jemalloc mainly to get heap usage statistics, actual performance
|
||||
// differnece is not measures.
|
||||
#[cfg(feature = "jemalloc")]
|
||||
#[global_allocator]
|
||||
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
|
||||
|
||||
|
|
|
@ -133,6 +133,7 @@ struct MemoryStats {
|
|||
}
|
||||
|
||||
impl MemoryStats {
|
||||
#[cfg(feature = "jemalloc")]
|
||||
fn current() -> MemoryStats {
|
||||
jemalloc_ctl::epoch().unwrap();
|
||||
MemoryStats {
|
||||
|
@ -140,6 +141,14 @@ impl MemoryStats {
|
|||
resident: Bytes(jemalloc_ctl::stats::resident().unwrap()),
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "jemalloc"))]
|
||||
fn current() -> MemoryStats {
|
||||
MemoryStats {
|
||||
allocated: Bytes(0),
|
||||
resident: Bytes(0),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for MemoryStats {
|
||||
|
|
|
@ -34,3 +34,6 @@ ra_vfs = { path = "../ra_vfs" }
|
|||
[dev-dependencies]
|
||||
tempfile = "3"
|
||||
test_utils = { path = "../test_utils" }
|
||||
|
||||
[features]
|
||||
jemalloc = [ "ra_ide_api/jemalloc" ]
|
||||
|
|
Loading…
Reference in a new issue