timetrace 0.2.1

Lightweight Rust profiling library with RAII and Chrome/Perfetto trace support
Documentation

Timetrace

A lightweight Rust profiling library inspired by Hazel and Tracy-style instrumentation.

Generates JSON traces compatible with Chrome Tracing and Perfetto.

Features

  • RAII profiling (scope-based)
  • Function attribute macro: #[profile_function]
  • Session management: #[profile_session]
  • Frame indexing in trace (args.frame)
  • Minimal overhead
  • Thread-aware (thread id included)

Example

use timetrace::{profile_function, profile_session};

#[profile_session("Example", "trace.json")]
fn main() {
	work();
}

#[profile_function]
fn work() {
	let mut sum = 0.0;

	for i in 0..1_000_000 {
		sum += (i as f64).cos();
	}

	println!("{sum}");
}

Run

cargo run -p timetrace_example

View Trace

Open in:

Output Example

{
  "name": "work",
  "cat": "function",
  "ph": "X",
  "ts": 123456789,
  "dur": 23000,
  "pid": 0,
  "tid": 12345,
  "args": {
    "frame": 0
  }
}

(Actual output is written as a single line JSON)

Cargo Features

Enable macros:

timetrace = { path = "...", features = ["macros"] }

(macros are enabled by default)

Disable macros:

timetrace = { path = "...", default-features = false }

License

Copyright 2026 Gleb Petrikov
Licensed under Apache-2.0