From 56f92f3659d77aa2372f86e43a8466ed030fef4e Mon Sep 17 00:00:00 2001 From: skal Date: Sun, 8 Feb 2026 13:05:15 +0100 Subject: feat(tools): Add effect depth analysis to seq_compiler Adds --analyze flag to seq_compiler to identify performance bottlenecks by analyzing how many effects run simultaneously at each point in the demo. Features: - Samples timeline at 10 Hz (every 0.1s) - Counts overlapping effects at each sample point - Generates histogram of effect depth distribution - Identifies bottleneck periods (>5 concurrent effects) - Reports max concurrent effects with timestamps - Lists top 10 bottleneck peaks with effect names Analysis Results for Current Demo (demo.seq): - Max concurrent effects: 11 at t=8.8s - 28 bottleneck periods detected (>5 effects) - 29.6% of demo has 7+ effects running (critical) - Most intensive section: 8b-12b (4-6 seconds) Most Used Effects: - GaussianBlurEffect: ~10 instances (optimization target) - HeptagonEffect: ~9 instances - ThemeModulationEffect: ~7 instances Usage: ./build/seq_compiler assets/demo.seq --analyze ./build/seq_compiler assets/demo.seq --analyze --gantt-html=out.html Files Modified: - tools/seq_compiler.cc: Added analyze_effect_depth() function - EFFECT_DEPTH_ANALYSIS.md: Detailed analysis report + recommendations - timeline_analysis.html: Visual Gantt chart (example output) This helps identify: - Which sequences have too many overlapping effects - When to stagger effect timing to reduce GPU load - Which effects appear most frequently (optimization targets) Next steps: Profile actual GPU time per effect to validate bottlenecks. --- timeline_analysis.html | 425 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 425 insertions(+) create mode 100644 timeline_analysis.html (limited to 'timeline_analysis.html') diff --git a/timeline_analysis.html b/timeline_analysis.html new file mode 100644 index 0000000..92e4a3f --- /dev/null +++ b/timeline_analysis.html @@ -0,0 +1,425 @@ + + + + +Demo Timeline - BPM 120 + + + +

Demo Timeline Gantt Chart

+
+BPM: 120 | Duration: 36s (explicit end) | Sequences: 14 +
+ + + + + + 0s + + + 2s + + + 4s + + + 6s + + + 8s + + + 10s + + + 12s + + + 14s + + + 16s + + + 18s + + + 20s + + + 22s + + + 24s + + + 26s + + + 28s + + + 30s + + + 32s + + + 34s + + + 36s + + + + SEQ@0s [pri=0] (0-2s) + + SEQ@0s [pri=0] + + FlashCubeEffect [pri=-1] (0.2-1.5s) + + FlashCubeEffect [pri=-1] + + FlashEffect [pri=0] (0-1s) + + FlashEffect [pri=0] + + FadeEffect [pri=1] (0.1-1s) + + FadeEffect [pri=1] + + SolarizeEffect [pri=2] (0-2s) + + SolarizeEffect [pri=2] + + + + + SEQ@2s [pri=0] (2-5s) + + SEQ@2s [pri=0] + + FlashCubeEffect [pri=-1] (2.1-5s) + + FlashCubeEffect [pri=-1] + + FlashEffect [pri=0] (2-2.2s) + + FlashEffect [pri=0] + + + + + SEQ@3s [pri=1] (3-7s) + + SEQ@3s [pri=1] + + ParticleSprayEffect [pri=0] (3-5s) + + ParticleSprayEffect [pri=0] + + ParticlesEffect [pri=1] (3-5s) + + ParticlesEffect [pri=1] + + GaussianBlurEffect [pri=1] (3-7s) + + GaussianBlurEffect [pri=1] + + + + + SEQ@3.5s [pri=0] (3.5-4.5s) + + SEQ@3.5s [pri=0] + + HeptagonEffect [pri=0] (3.5-3.7s) + + HeptagonEffect [pri=0] + + FadeEffect [pri=1] (3.6-4.5s) + + FadeEffect [pri=1] + + + + + SEQ@4s [pri=3] (4-9s) + + SEQ@4s [pri=3] + + ThemeModulationEffect [pri=0] (4-6s) + + ThemeModulationEffect [pri=0] + + HeptagonEffect [pri=0] (4-8s) + + HeptagonEffect [pri=0] + + GaussianBlurEffect [pri=1] (4-8s) + + GaussianBlurEffect [pri=1] + + ChromaAberrationEffect [pri=2] (4-7s) + + ChromaAberrationEffect [pri=2] + + SolarizeEffect [pri=3] (4-9s) + + SolarizeEffect [pri=3] + + + + + SEQ@6s [pri=2] (6-8s) + + SEQ@6s [pri=2] + + FlashCubeEffect [pri=-1] (6.2-7.5s) + + FlashCubeEffect [pri=-1] + + HeptagonEffect [pri=0] (6-8s) + + HeptagonEffect [pri=0] + + ParticleSprayEffect [pri=1] (6-8s) + + ParticleSprayEffect [pri=1] + + ParticlesEffect [pri=2] (6-8s) + + ParticlesEffect [pri=2] + + + + + SEQ@7.5s [pri=2] (7.5-9s) + + SEQ@7.5s [pri=2] + + FlashCubeEffect [pri=-1] (7.7-9s) + + FlashCubeEffect [pri=-1] + + FlashEffect [pri=0] (7.5-8s) + + FlashEffect [pri=0] + + + + + SEQ@8s [pri=10] (8-12s) + + SEQ@8s [pri=10] + + FlashCubeEffect [pri=-1] (8.2-9.5s) + + FlashCubeEffect [pri=-1] + + GaussianBlurEffect [pri=0] (8-12s) + + GaussianBlurEffect [pri=0] + + FlashEffect [pri=1] (8-8.2s) + + FlashEffect [pri=1] + + FlashEffect [pri=1] (8.5-8.2s) *** INVALID TIME RANGE *** + + FlashEffect [pri=1] ⚠ + + + + + SEQ@8.5s [pri=2] (8.5-12.5s) + + SEQ@8.5s [pri=2] + + ThemeModulationEffect [pri=0] (8.5-10.5s) + + ThemeModulationEffect [pri=0] + + HeptagonEffect [pri=1] (8.7-10.5s) + + HeptagonEffect [pri=1] + + ParticleSprayEffect [pri=2] (8.5-10.5s) + + ParticleSprayEffect [pri=2] + + ParticlesEffect [pri=2] (8.5-10.5s) + + ParticlesEffect [pri=2] + + Hybrid3DEffect [pri=3] (8.5-10.5s) + + Hybrid3DEffect [pri=3] + + GaussianBlurEffect [pri=4] (8.5-12.5s) + + GaussianBlurEffect [pri=4] + + ChromaAberrationEffect [pri=5] (8.5-11.5s) + + ChromaAberrationEffect [pri=5] + + + + + SEQ@12s [pri=1] (12-22s) + + SEQ@12s [pri=1] + + ThemeModulationEffect [pri=0] (12-16s) + + ThemeModulationEffect [pri=0] + + HeptagonEffect [pri=1] (12.2-14s) + + HeptagonEffect [pri=1] + + ParticleSprayEffect [pri=2] (12-16s) + + ParticleSprayEffect [pri=2] + + Hybrid3DEffect [pri=3] (12-22s) + + Hybrid3DEffect [pri=3] + + GaussianBlurEffect [pri=4] (12-16s) + + GaussianBlurEffect [pri=4] + + ChromaAberrationEffect [pri=5] (12-17s) + + ChromaAberrationEffect [pri=5] + + SolarizeEffect [pri=6] (12-17s) + + SolarizeEffect [pri=6] + + + + + SEQ@16s [pri=0] (16-24s) + + SEQ@16s [pri=0] + + ThemeModulationEffect [pri=0] (16-18s) + + ThemeModulationEffect [pri=0] + + HeptagonEffect [pri=1] (16-24s) + + HeptagonEffect [pri=1] + + ChromaAberrationEffect [pri=2] (16-24s) + + ChromaAberrationEffect [pri=2] + + GaussianBlurEffect [pri=3] (16-20s) + + GaussianBlurEffect [pri=3] + + + + + SEQ@24s [pri=0] (24-28s) + + SEQ@24s [pri=0] + + ThemeModulationEffect [pri=0] (24-26s) + + ThemeModulationEffect [pri=0] + + HeptagonEffect [pri=1] (24.2-26s) + + HeptagonEffect [pri=1] + + GaussianBlurEffect [pri=2] (24-28s) + + GaussianBlurEffect [pri=2] + + SolarizeEffect [pri=3] (24-25s) + + SolarizeEffect [pri=3] + + + + + SEQ@28s [pri=0] (28-36s) + + SEQ@28s [pri=0] + + ThemeModulationEffect [pri=0] (28-32s) + + ThemeModulationEffect [pri=0] + + HeptagonEffect [pri=0] (28.2-30s) + + HeptagonEffect [pri=0] + + Hybrid3DEffect [pri=1] (28-30s) + + Hybrid3DEffect [pri=1] + + ParticleSprayEffect [pri=2] (28-32s) + + ParticleSprayEffect [pri=2] + + HeptagonEffect [pri=3] (28-36s) + + HeptagonEffect [pri=3] + + ChromaAberrationEffect [pri=4] (28-36s) + + ChromaAberrationEffect [pri=4] + + GaussianBlurEffect [pri=5] (28-32s) + + GaussianBlurEffect [pri=5] + + + + + SEQ@31s [pri=0] (31-32.5s) + + SEQ@31s [pri=0] + + ThemeModulationEffect [pri=0] (31-32.5s) + + ThemeModulationEffect [pri=0] + + SolarizeEffect [pri=1] (31-32.5s) + + SolarizeEffect [pri=1] + + + Sequence + + Effect + + Invalid Time Range + +
+Tip: Hover over bars to see details. Higher priority numbers render later (on top). +
+ + -- cgit v1.2.3