diff options
| author | Mica White <botahamec@outlook.com> | 2026-07-03 16:32:26 -0400 |
|---|---|---|
| committer | Mica White <botahamec@outlook.com> | 2026-07-03 16:32:26 -0400 |
| commit | cbbe1ca7f7b36b03e813fbf7e0147341090762bb (patch) | |
| tree | 4610ef483e1c80bb2c08a4e5ca69e235f8de275c /src/buffer.rs | |
| parent | e8fe3415e86e18ac97216ada94002d0a03ee3c8a (diff) | |
Fix performance
Diffstat (limited to 'src/buffer.rs')
| -rw-r--r-- | src/buffer.rs | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/buffer.rs b/src/buffer.rs index 999a32c..6d983db 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -60,16 +60,23 @@ impl Buffer { fn render(&mut self) -> std::io::Result<()> { puffin::profile_function!(); - self.cells.sort_unstable_by_key(|cell| cell.z); - queue!(self.stdout, BeginSynchronizedUpdate, Clear(ClearType::All))?; - for cell in &self.cells { - queue!( - self.stdout, - MoveTo(cell.x, cell.y), - PrintStyledContent(StyledContent::new(cell.style, cell.character)) - )?; + { + puffin::profile_scope!("sort cells"); + self.cells.sort_unstable_by_key(|cell| cell.z); } - queue!(self.stdout, EndSynchronizedUpdate)?; + { + puffin::profile_scope!("queue"); + queue!(self.stdout, BeginSynchronizedUpdate, Clear(ClearType::All))?; + for cell in &self.cells { + queue!( + self.stdout, + MoveTo(cell.x, cell.y), + PrintStyledContent(StyledContent::new(cell.style, cell.character)) + )?; + } + queue!(self.stdout, EndSynchronizedUpdate)?; + } + puffin::profile_scope!("flush"); self.stdout.flush()?; Ok(()) } @@ -96,6 +103,7 @@ impl Buffer { } }); loop { + puffin::profile_scope!("frame"); while let Ok(event) = receiver.try_recv() { if let Ok(event) = event.try_into() { event_handler(self, event); @@ -103,6 +111,7 @@ impl Buffer { } event_handler(self, Event::Render); self.render()?; + puffin::GlobalProfiler::lock().new_frame(); } })?; self.finish()?; |
