dhat-rs VS cargo-call-stack

Compare dhat-rs vs cargo-call-stack and see what are their differences.

dhat-rs

Heap profiling and ad hoc profiling for Rust programs. (by nnethercote)

cargo-call-stack

Whole program static stack analysis (by japaric)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
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
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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

Posts with mentions or reviews of dhat-rs. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-07-03.

cargo-call-stack

Posts with mentions or reviews of cargo-call-stack. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-25.
  • Why choose async/await over threads?
    11 projects | news.ycombinator.com | 25 Mar 2024
    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
    5 projects | news.ycombinator.com | 5 May 2023
    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.
    8 projects | /r/rust | 30 Mar 2023
    cargo-call-stack Static stack analysis!
  • In defense of complicated programming languages
    3 projects | /r/rust | 25 Jan 2022
    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
    3 projects | news.ycombinator.com | 26 Jun 2021
    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?

When comparing dhat-rs and cargo-call-stack you can also consider the following projects:

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.