From 7396c0aef88c30cb79e1eee2b62be65ab78e95ab Mon Sep 17 00:00:00 2001 From: Tarasov Aleksandr <55220741+arabianq@users.noreply.github.com> Date: Mon, 27 Apr 2026 23:03:37 +0300 Subject: [PATCH] perf(gui): Optimize UI rendering loop by iterating over tracks by reference (#88) * perf: optimize UI rendering loop by removing unnecessary Vec clone\n\n- Removed `clone()` on `self.audio_player_state.tracks` in `draw_header`\n- Iterated by reference instead of using an owned collection\n- Benchmarked and showed a significant performance improvement (7us -> 87ns) Co-authored-by: arabianq <55220741+arabianq@users.noreply.github.com> * build(flatpak): update cargo-sources.json to include criterion\n\nThe CI failed during the offline flatpak build because the newly added `criterion` dev-dependency was missing from `cargo-sources.json`. Regenerated `packages/flatpak/cargo-sources.json` to fix it. Co-authored-by: arabianq <55220741+arabianq@users.noreply.github.com> * Delete benches/ui_benchmark.rs * refactor: remove garbage --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- src/gui/draw.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gui/draw.rs b/src/gui/draw.rs index 425d90c..8455aca 100644 --- a/src/gui/draw.rs +++ b/src/gui/draw.rs @@ -409,10 +409,9 @@ impl SoundpadGui { return; } - let tracks = self.audio_player_state.tracks.clone(); let mut action = None; - for track in tracks { + for track in &self.audio_player_state.tracks { CollapsingHeader::new( RichText::new( track