#[expect(clippy::unwrap_used)]
#[expect(clippy::print_stderr)]
#[expect(clippy::infinite_loop)]
fn main() {
simple_logger::SimpleLogger::new()
.with_level(log::LevelFilter::Info)
.without_timestamps()
.init()
.ok();
let server_addr = format!("127.0.0.1:{}", puffin_http::DEFAULT_PORT);
let _puffin_server = puffin_http::Server::new(&server_addr).unwrap();
eprintln!("Serving demo profile data on {server_addr}. Run `puffin_viewer` to view it.");
puffin::set_scopes_on(true);
let mut frame_counter = 0;
loop {
puffin::profile_scope!("main_loop", format!("frame {frame_counter}"));
puffin::GlobalProfiler::lock().new_frame();
std::thread::Builder::new()
.name("Other thread".to_owned())
.spawn(|| {
sleep_ms(5);
})
.unwrap();
sleep_ms(14);
if frame_counter % 7 == 0 {
puffin::profile_scope!("Spike");
std::thread::sleep(std::time::Duration::from_millis(10));
}
for _ in 0..1000 {
puffin::profile_scope!("very thin");
}
frame_counter += 1;
}
}
fn sleep_ms(ms: usize) {
puffin::profile_function!();
match ms {
0 => {}
1 => std::thread::sleep(std::time::Duration::from_millis(1)),
_ => {
sleep_ms(ms / 2);
sleep_ms(ms - (ms / 2));
}
}
}