diff options
| author | brian cully <bjc@spork.org> | 2025-12-29 12:27:20 -0500 |
|---|---|---|
| committer | brian cully <bjc@spork.org> | 2025-12-29 12:27:20 -0500 |
| commit | d4cb9d1f99ee2515b56bca0bb4ed3011b5d39d84 (patch) | |
| tree | de52375f2f1c464da399a6f4f52f3d98328d2ce0 /src/lib.rs | |
| parent | 33ff3488f89b3e89ed31780ff7ab72128abe5312 (diff) | |
| download | polyring-d4cb9d1f99ee2515b56bca0bb4ed3011b5d39d84.tar.gz polyring-d4cb9d1f99ee2515b56bca0bb4ed3011b5d39d84.zip | |
wasm: render bench results in html
Diffstat (limited to 'src/lib.rs')
| -rw-r--r-- | src/lib.rs | 42 |
1 files changed, 34 insertions, 8 deletions
@@ -1,5 +1,5 @@ -use std::{cell::RefCell, rc::Rc}; use std::sync::Mutex; +use std::{cell::RefCell, rc::Rc}; use log::{Level, debug, info}; use wasm_bindgen::prelude::*; @@ -25,27 +25,44 @@ fn document() -> web_sys::Document { } fn canvas() -> JSResult<web_sys::HtmlCanvasElement> { - let x = document().query_selector("section.watch canvas")?.ok_or("no canvas")?; + let x = document() + .query_selector("section.watch canvas")? + .ok_or("no canvas")?; Ok(x.dyn_into()?) } fn fps() -> JSResult<web_sys::HtmlElement> { - let x = document().query_selector("section.watch .fps")?.ok_or("no fps counter")?; + let x = document() + .query_selector("section.watch .fps")? + .ok_or("no fps counter")?; Ok(x.dyn_into()?) } fn go() -> JSResult<web_sys::HtmlElement> { - let x = document().query_selector("section.watch button")?.ok_or("no go button")?; + let x = document() + .query_selector("section.watch button")? + .ok_or("no go button")?; Ok(x.dyn_into()?) } fn iters() -> JSResult<web_sys::HtmlInputElement> { - let x = document().query_selector("section.bench input")?.ok_or("no go button")?; + let x = document() + .query_selector("section.bench input")? + .ok_or("no iters input")?; Ok(x.dyn_into()?) } fn bench() -> JSResult<web_sys::HtmlElement> { - let x = document().query_selector("section.bench button")?.ok_or("no go button")?; + let x = document() + .query_selector("section.bench button")? + .ok_or("no bench button")?; + Ok(x.dyn_into()?) +} + +fn results() -> JSResult<web_sys::HtmlElement> { + let x = document() + .query_selector("section.bench .results")? + .ok_or("no results element")?; Ok(x.dyn_into()?) } @@ -91,7 +108,10 @@ pub fn init() -> JSResult<()> { let bench_handler: HandlerClosure = Closure::new(move |e| { debug!("bench clicked {:?}", e); - let iters = iters()?.value().parse::<u32>().map_err(|_| "iters isn't int")?; + let iters = iters()? + .value() + .parse::<u32>() + .map_err(|_| "iters isn't int")?; let mut s = s1.borrow_mut(); let perf = window().performance().unwrap(); @@ -103,7 +123,13 @@ pub fn init() -> JSResult<()> { let delta = end - start; let iters_per_ms = Into::<f64>::into(iters) / delta; - info!("bench done. {iters} iters in {delta} ms ({iters_per_ms} iters per ms)"); + results()?.set_text_content(Some( + format!( + "{} iters in {:0.2} ms ({:0.2} iters per ms)", + iters, delta, iters_per_ms + ) + .as_str(), + )); Ok(()) }); bench()?.set_onclick(Some(bench_handler.as_ref().unchecked_ref())); |
