1 unstable release

0.1.0 Sep 13, 2019

#1591 in WebAssembly

Download history 1665/week @ 2024-07-20 1614/week @ 2024-07-27 1278/week @ 2024-08-03 1996/week @ 2024-08-10 1491/week @ 2024-08-17 1602/week @ 2024-08-24 1503/week @ 2024-08-31 1186/week @ 2024-09-07 1192/week @ 2024-09-14 1410/week @ 2024-09-21 1213/week @ 2024-09-28 892/week @ 2024-10-05 1228/week @ 2024-10-12 1289/week @ 2024-10-19 1256/week @ 2024-10-26 1017/week @ 2024-11-02

4,873 downloads per month

MIT/Apache

8KB

gloo-console-timer

Build Status Crates.io version Download docs.rs docs

API Docs | Contributing | Chat

Built with 🦀🕸 by The Rust and WebAssembly Working Group

The console.time and console.timeEnd functions allow you to log the timing of named operations to the browser's developer tools console. You call console.time("foo") when the operation begins, and call console.timeEnd("foo") when it finishes.

Additionally, these measurements will show up in your browser's profiler's "timeline" or "waterfall" view.

See MDN for more info.

This API wraps both the time and timeEnd calls into a single type named ConsoleTimer, ensuring both are called.

Scoped Measurement

Wrap code to be measured in a closure with ConsoleTimer::scope.

use gloo_console_timer::ConsoleTimer;

let value = ConsoleTimer::scope("foo", || {
    // Place code to be measured here
    // Optionally return a value.
});

RAII-Style Measurement

For scenarios where ConsoleTimer::scope can't be used, like with asynchronous operations, you can use ConsoleTimer::new to create a timer. The measurement ends when the timer object goes out of scope / is dropped.

use gloo_console_timer::ConsoleTimer;
use gloo_timers::callback::Timeout;

// Start timing a new operation.
let timer = ConsoleTimer::new("foo");

// And then asynchronously finish timing.
let timeout = Timeout::new(1_000, move || {
    drop(timer);
});

Dependencies

~7.5–10MB
~182K SLoC