mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-13 21:54:42 +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
|
all communication between the server and the client, use
|
||||||
`RUST_LOG=gen_lsp_server=debug` (this will print quite a bit of stuff).
|
`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`.
|
To run tests, just `cargo test`.
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,9 @@ fst = "0.3.1"
|
||||||
rustc-hash = "1.0"
|
rustc-hash = "1.0"
|
||||||
parking_lot = "0.7.0"
|
parking_lot = "0.7.0"
|
||||||
unicase = "2.2.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_syntax = { path = "../ra_syntax" }
|
||||||
ra_ide_api_light = { path = "../ra_ide_api_light" }
|
ra_ide_api_light = { path = "../ra_ide_api_light" }
|
||||||
|
@ -26,3 +27,6 @@ test_utils = { path = "../test_utils" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
insta = "0.5.1"
|
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
|
// We use jemalloc mainly to get heap usage statistics, actual performance
|
||||||
// differnece is not measures.
|
// differnece is not measures.
|
||||||
|
#[cfg(feature = "jemalloc")]
|
||||||
#[global_allocator]
|
#[global_allocator]
|
||||||
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
|
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
|
||||||
|
|
||||||
|
|
|
@ -133,6 +133,7 @@ struct MemoryStats {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MemoryStats {
|
impl MemoryStats {
|
||||||
|
#[cfg(feature = "jemalloc")]
|
||||||
fn current() -> MemoryStats {
|
fn current() -> MemoryStats {
|
||||||
jemalloc_ctl::epoch().unwrap();
|
jemalloc_ctl::epoch().unwrap();
|
||||||
MemoryStats {
|
MemoryStats {
|
||||||
|
@ -140,6 +141,14 @@ impl MemoryStats {
|
||||||
resident: Bytes(jemalloc_ctl::stats::resident().unwrap()),
|
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 {
|
impl fmt::Display for MemoryStats {
|
||||||
|
|
|
@ -34,3 +34,6 @@ ra_vfs = { path = "../ra_vfs" }
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile = "3"
|
tempfile = "3"
|
||||||
test_utils = { path = "../test_utils" }
|
test_utils = { path = "../test_utils" }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
jemalloc = [ "ra_ide_api/jemalloc" ]
|
||||||
|
|
Loading…
Reference in a new issue