dhat-rs
cargo-call-stack
Our great sponsors
dhat-rs | cargo-call-stack | |
---|---|---|
7 | 5 | |
677 | 554 | |
- | - | |
4.9 | 0.0 | |
2 months ago | about 2 months ago | |
Rust | Rust | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
dhat-rs
-
how expensive is an operation?
dhat for heap profiling
-
Debugging and profiling embedded applications.
You could wrap the global allocator similar to dhat to instrument heap allocations. dhat itself depends on std.
-
How to get a runtime size of a variable or struct that has btreemaps and hashmaps
I'm no expert in this, but I think you'll want something like https://github.com/nnethercote/dhat-rs
-
RFC on new API for `dhat` heap profiling crate
I am requesting comment on a new design for my dhat-rs profiling crate at https://github.com/nnethercote/dhat-rs/issues/17.
-
Blog post: (I want) A Better Rust Profiler
https://github.com/nnethercote/dhat-rs is a bit like this, albeit for heap allocation profiling. But it's experimental and I'm not really maintaining it right now.
-
How to find a memory leak in a Rust program?
https://github.com/nnethercote/dhat-rs is an incredibly useful tool, but to slow to run in production.
cargo-call-stack
-
Why choose async/await over threads?
Yes, it's what I wrote about in the last paragraph. If you can compute maximum stack size of a function, then you can avoid dynamic allocation with fibers as well. You are right that such implementations do not exist in right now, but I think it's technically possible as demonstrated by tools such as https://github.com/japaric/cargo-call-stack The main stumbling block here is FFI, historically shared libraries do not have any annotations about stack usage, so functions with bounded stack usage would not be able to use even libc.
-
Ask not what the compiler can do for you
For rust code, I have found https://github.com/japaric/cargo-call-stack to be the best available option, as it does take advantage of how Rust types are implemented in LLVM-IR to handle function pointers / dynamic dispatch a little better. An even better solution would try to use MIR type information as well to further narrow down targets of dynamic calls in a Rust-specific way, but no such tool exists that I know of.
-
Debugging and profiling embedded applications.
cargo-call-stack Static stack analysis!
-
In defense of complicated programming languages
Generators can just dump stuff on the stack. They have additional their own stack for storing their state. If you can prove an upper amount of creation of generators in the call graph, that would however work. There is for example this nice tool for Rust doing the overapproximation.
-
Understanding thread stack sizes and how alpine is different
Not easy at all.
I know that in the small-embedded world, people do work on such things.
Eg https://github.com/japaric/cargo-call-stack
What are some alternatives?
heaptrack - A heap memory profiler for Linux
hyperswitch - An open source payments switch written in Rust to make payments fast, reliable and affordable
flamegraph - Easy flamegraphs for Rust projects and everything else, without Perl or pipes <3
itm - ARMv7-M ITM packet protocol decoder library crate and CLI tool.
hotspot - The Linux perf GUI for performance analysis.
memory-profiler - A memory profiler for Linux. [Moved to: https://github.com/koute/bytehound]
firestorm - A fast intrusive flamegraph
iai - Experimental one-shot benchmarking/profiling harness for Rust
tree-buf - An experimental serialization system written in Rust
self-driving-car - A bot that loses at Rocket League
tracing - Application level tracing for Rust.