alloc_tracker 0.5.3

Memory allocation tracking utilities for benchmarks and performance analysis
Documentation

Memory allocation tracking utilities for benchmarks and performance analysis.

This package provides utilities to track memory allocations during code execution, enabling analysis of allocation patterns in benchmarks and performance tests.

Basic usage

use alloc_tracker::{Allocator, Session};

#[global_allocator]
static ALLOCATOR: Allocator<std::alloc::System> = Allocator::system();

fn main() {
    let session = Session::new();

    // Track a single operation
    {
        let operation = session.operation("my_operation");
        let _span = operation.measure_process();
        let _data = vec![1, 2, 3, 4, 5]; // This allocates memory
    }

    // Print results
    session.print_to_stdout();

    // Session automatically cleans up when dropped
}

Debugging unexpected allocations

The package also provides a panic-on-allocation feature to help track down unexpected allocations in performance-critical code:

use alloc_tracker::{panic_on_alloc, Allocator};

#[global_allocator]
static ALLOCATOR: Allocator<std::alloc::System> = Allocator::system();

fn main() {
    // Enable panic on allocation
    panic_on_alloc(true);
    
    // Any allocation attempt will now panic with a descriptive message
    // let _vec = vec![1, 2, 3]; // This would panic!
    
    // Disable to allow allocations again
    panic_on_alloc(false);
    let _vec = vec![1, 2, 3]; // This is safe
}

More details in the package documentation.

This is part of the Folo project that provides mechanisms for high-performance hardware-aware programming in Rust.