# Wanted
It would be great to have the following features added to Divan. If you have
ideas to expand this list, please [find](https://github.com/nvzqz/divan/discussions)
or [create](https://github.com/nvzqz/divan/discussions/new?category=ideas) a
discussion first.
- Async benchmarks
- Baseline benchmark
- Should match baselines across equal generic types and constants
- Idea:
```rs
#[divan::bench]
fn old() { ... }
#[divan::bench(baseline = old)]
fn new() { ... }
```
- Cross-device: run benchmarks on other devices and report the data on the local
device
- HTML output
- CSV output
- Custom counters
- Time complexity of counters
- Also space complexity when measuring heap allocation
- Measure heap allocations
- Custom [`GlobalAlloc`](https://doc.rust-lang.org/std/alloc/trait.GlobalAlloc.html)
that wraps another `GlobalAlloc`, defaulting to [`System`](https://doc.rust-lang.org/std/alloc/struct.System.html)
- Custom timers
- Timer for kernel/user mode
- Unix:
- [`getrusage(2)`](https://pubs.opengroup.org/onlinepubs/9699919799/functions/getrusage.html)
- Per-thread:
- Linux/FreeBSD/OpenBSD: [`RUSAGE_THREAD`](https://man7.org/linux/man-pages/man2/getrusage.2.html)
- macOS/iOS: [`thread_info(mach_thread_self(), ...)`](https://www.gnu.org/software/hurd/gnumach-doc/Thread-Information.html)
- Windows:
- [`GetProcessTimes`](https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getprocesstimes)
- [`GetThreadTimes`](https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getthreadtimes)