Skip to content

feat(components): Image size decoding customization #1925

Open
marc2332 wants to merge 10 commits into
mainfrom
feat/image-viewer-optimizations
Open

feat(components): Image size decoding customization #1925
marc2332 wants to merge 10 commits into
mainfrom
feat/image-viewer-optimizations

Conversation

@marc2332

Copy link
Copy Markdown
Owner

Closes #633

@marc2332 marc2332 added this to the 0.4.0 milestone May 30, 2026
@marc2332 marc2332 self-assigned this May 30, 2026
@marc2332 marc2332 added the enhancement 🔥 New feature or request label May 30, 2026
@github-actions

github-actions Bot commented May 30, 2026

Copy link
Copy Markdown

Performance Comparison mainfeat/image-viewer-optimizations

Total Elapsed Time: 68.74ms → 69.91ms (+1.7%)
CPU Baseline: 90.16µs → 85.51µs (-5.2%)
Benchmark ID: alloc

timing - Function execution time metrics.

+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| Function                          | Calls                    | Avg                               | P33                              | P66                              | P95                               | P99                               | Total                            | % Total                      |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| dev_perf::main                    | 1 → 1 (+0.0%)            | 68.32ms → 69.57ms (+1.8%)         | 68.35ms → 69.60ms (+1.8%)        | 68.35ms → 69.60ms (+1.8%)        | 68.35ms → 69.60ms (+1.8%)         | 68.35ms → 69.60ms (+1.8%)         | 68.34ms → 69.58ms (+1.8%)        | 100.00% → 100.00% (+0.0%)    |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| runner::run_scope                 | 32025 → 32025 (+0.0%)    | 1.42µs → 1.43µs (+0.7%)           | 10.00ns → 10.00ns (+0.0%)        | 20.00ns → 20.00ns (+0.0%)        | 20.00ns → 20.00ns (+0.0%)         | 30.00ns → 31.00ns (+3.3%)         | 45.54ms → 45.75ms (+0.5%)        | 66.63% → 65.75% (-1.3%)      |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| runner::sync_and_update           | 3 → 3 (+0.0%)            | 12.23ms → 12.37ms (+1.1%)         | 7.27ms → 7.27ms (+0.0%)          | 8.58ms → 8.79ms (+2.4%)          | 20.86ms → 21.07ms (+1.0%)         | 20.86ms → 21.07ms (+1.0%)         | 36.69ms → 37.13ms (+1.2%)        | 53.68% → 53.36% (-0.6%)      |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| tree::apply_mutations             | 3 → 3 (+0.0%)            | 10.03ms → 10.30ms (+2.7%)         | 2.49ms → 2.68ms (+7.6%)          | 10.66ms → 10.94ms (+2.6%)        | 16.94ms → 17.30ms (+2.1%)         | 16.94ms → 17.30ms (+2.1%)         | 30.08ms → 30.90ms (+2.7%)        | 44.01% → 44.41% (+0.9%)      |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| path_element::from_element        | 32025 → 32025 (+0.0%)    | 453.00ns → 446.00ns (-1.5%)       | 40.00ns → 40.00ns (+0.0%)        | 50.00ns → 50.00ns (+0.0%)        | 70.00ns → 70.00ns (+0.0%)         | 80.00ns → 71.00ns (-11.2%)        | 14.54ms → 14.29ms (-1.7%)        | 21.27% → 20.54% (-3.4%)      |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| mutations run                     | 3 → 3 (+0.0%)            | 4.45ms → 4.59ms (+3.1%)           | 3.87µs → 4.39µs (+13.4%)         | 2.68ms → 2.84ms (+6.0%)          | 10.66ms → 10.93ms (+2.5%)         | 10.66ms → 10.93ms (+2.5%)         | 13.33ms → 13.77ms (+3.3%)        | 19.51% → 19.79% (+1.4%)      |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| path_element::diff                | 32025 → 32025 (+0.0%)    | 376.00ns → 378.00ns (+0.5%)       | 50.00ns → 49.00ns (-2.0%)        | 50.00ns → 60.00ns (+20.0%)       | 161.00ns → 161.00ns (+0.0%)       | 501.00ns → 492.00ns (-1.8%)       | 12.04ms → 12.11ms (+0.6%)        | 17.62% → 17.40% (-1.2%)      |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| runner::apply_diff                | 6 → 6 (+0.0%)            | 1.52ms → 1.58ms (+3.9%)           | 5.64µs → 5.48µs (-2.8%)          | 2.18ms → 2.22ms (+1.8%)          | 2.70ms → 2.79ms (+3.3%)           | 2.70ms → 2.79ms (+3.3%)           | 9.12ms → 9.51ms (+4.3%)          | 13.34% → 13.66% (+2.4%)      |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| Scope Rendering                   | 2 → 2 (+0.0%)            | 4.33ms → 4.49ms (+3.7%)           | 4.05ms → 4.35ms (+7.4%)          | 4.62ms → 4.62ms (+0.0%)          | 4.62ms → 4.62ms (+0.0%)           | 4.62ms → 4.62ms (+0.0%)           | 8.66ms → 8.97ms (+3.6%)          | 12.68% → 12.90% (+1.7%)      |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| text style cascade                | 3 → 3 (+0.0%)            | 1.90ms → 2.08ms (+9.5%)           | 40.00ns → 130.00ns (+225.0%) ⚠️  | 1.54µs → 1.98µs (+28.6%) ⚠️      | 5.71ms → 6.23ms (+9.1%)           | 5.71ms → 6.23ms (+9.1%)           | 5.71ms → 6.23ms (+9.1%)          | 8.36% → 8.95% (+7.1%)        |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| dirty run                         | 3 → 3 (+0.0%)            | 1.93ms → 1.83ms (-5.2%)           | 581.00ns → 532.00ns (-8.4%)      | 2.19µs → 2.02µs (-7.8%)          | 5.78ms → 5.49ms (-5.0%)           | 5.78ms → 5.49ms (-5.0%)           | 5.79ms → 5.49ms (-5.2%)          | 8.47% → 7.89% (-6.8%)        |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| layer cascade                     | 3 → 3 (+0.0%)            | 1.71ms → 1.76ms (+2.9%)           | 331.00ns → 201.00ns (-39.3%) 🚀  | 2.48ms → 2.62ms (+5.6%)          | 2.64ms → 2.67ms (+1.1%)           | 2.64ms → 2.67ms (+1.1%)           | 5.12ms → 5.29ms (+3.3%)          | 7.50% → 7.60% (+1.3%)        |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| runner::handle_events_immediately | 3 → 3 (+0.0%)            | 247.00ns → 517.00ns (+109.3%) ⚠️  | 220.00ns → 351.00ns (+59.5%) ⚠️  | 241.00ns → 390.00ns (+61.8%) ⚠️  | 281.00ns → 812.00ns (+189.0%) ⚠️  | 281.00ns → 812.00ns (+189.0%) ⚠️  | 742.00ns → 1.55µs (+108.9%) ⚠️   | 0.00% → 0.00% (+0.0%)        |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+
| effect cascade                    | 3 → 3 (+0.0%)            | 144.00ns → 217.00ns (+50.7%) ⚠️   | 131.00ns → 120.00ns (-8.4%)      | 140.00ns → 131.00ns (-6.4%)      | 161.00ns → 400.00ns (+148.4%) ⚠️  | 161.00ns → 400.00ns (+148.4%) ⚠️  | 432.00ns → 651.00ns (+50.7%) ⚠️  | 0.00% → 0.00% (+0.0%)        |
+-----------------------------------+--------------------------+-----------------------------------+----------------------------------+----------------------------------+-----------------------------------+-----------------------------------+----------------------------------+------------------------------+

alloc-bytes - Exclusive allocation bytes by each function (excluding nested calls).

+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| Function                          | Calls                    | Avg                          | P33                            | P66                          | P95                            | P99                            | Total                          | % Total                    |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| Scope Rendering                   | 2 → 2 (+0.0%)            | 6.9 MB → 6.9 MB (+0.0%)      | 6.9 MB → 6.9 MB (+0.0%)        | 6.9 MB → 6.9 MB (+0.0%)      | 6.9 MB → 6.9 MB (+0.0%)        | 6.9 MB → 6.9 MB (+0.0%)        | 13.8 MB → 13.8 MB (+0.0%)      | 22.23% → 22.23% (+0.0%)    |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| runner::apply_diff                | 6 → 6 (+0.0%)            | 1.6 MB → 1.6 MB (+0.0%)      | 604 B → 604 B (+0.0%)          | 1.4 MB → 1.4 MB (+0.0%)      | 3.3 MB → 3.3 MB (+0.0%)        | 3.3 MB → 3.3 MB (+0.0%)        | 9.4 MB → 9.4 MB (+0.0%)        | 15.13% → 15.13% (+0.0%)    |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| text style cascade                | 3 → 3 (+0.0%)            | 2.8 MB → 2.8 MB (+0.0%)      | 84 B → 84 B (+0.0%)            | 8.3 MB → 8.3 MB (+0.0%)      | 8.3 MB → 8.3 MB (+0.0%)        | 8.3 MB → 8.3 MB (+0.0%)        | 8.3 MB → 8.3 MB (+0.0%)        | 13.37% → 13.37% (+0.0%)    |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| runner::sync_and_update           | 3 → 3 (+0.0%)            | 2.8 MB → 2.8 MB (+0.0%)      | 1.0 KB → 1.0 KB (+0.0%)        | 1.4 MB → 1.4 MB (+0.0%)      | 6.9 MB → 6.9 MB (+0.0%)        | 6.9 MB → 6.9 MB (+0.0%)        | 8.3 MB → 8.3 MB (+0.0%)        | 13.35% → 13.35% (+0.0%)    |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| mutations run                     | 3 → 3 (+0.0%)            | 2.5 MB → 2.5 MB (+0.0%)      | 64 B → 64 B (+0.0%)            | 1.6 MB → 1.6 MB (+0.0%)      | 6.0 MB → 6.0 MB (+0.0%)        | 6.0 MB → 6.0 MB (+0.0%)        | 7.6 MB → 7.6 MB (+0.0%)        | 12.21% → 12.21% (+0.0%)    |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| dirty run                         | 3 → 3 (+0.0%)            | 1.4 MB → 1.4 MB (+0.0%)      | 64 B → 64 B (+0.0%)            | 4.2 MB → 4.2 MB (+0.0%)      | 4.2 MB → 4.2 MB (+0.0%)        | 4.2 MB → 4.2 MB (+0.0%)        | 4.2 MB → 4.2 MB (+0.0%)        | 6.76% → 6.76% (+0.0%)      |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| layer cascade                     | 3 → 3 (+0.0%)            | 1.2 MB → 1.2 MB (+0.0%)      | 874.5 KB → 874.5 KB (+0.0%)    | 2.8 MB → 2.8 MB (+0.0%)      | 2.8 MB → 2.8 MB (+0.0%)        | 2.8 MB → 2.8 MB (+0.0%)        | 3.7 MB → 3.7 MB (+0.0%)        | 5.97% → 5.97% (+0.0%)      |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| path_element::from_element        | 32025 → 32025 (+0.0%)    | 107 B → 107 B (+0.0%)        | 12 B → 12 B (+0.0%)            | 12 B → 12 B (+0.0%)          | 12 B → 12 B (+0.0%)            | 12 B → 12 B (+0.0%)            | 3.3 MB → 3.3 MB (+0.0%)        | 5.32% → 5.32% (+0.0%)      |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| path_element::diff                | 32025 → 32025 (+0.0%)    | 104 B → 104 B (+0.0%)        | 12 B → 12 B (+0.0%)            | 12 B → 12 B (+0.0%)          | 12 B → 12 B (+0.0%)            | 12 B → 12 B (+0.0%)            | 3.2 MB → 3.2 MB (+0.0%)        | 5.14% → 5.14% (+0.0%)      |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| tree::apply_mutations             | 3 → 3 (+0.0%)            | 96.3 KB → 96.3 KB (+0.0%)    | 52 B → 52 B (+0.0%)            | 52 B → 52 B (+0.0%)          | 289.0 KB → 289.0 KB (+0.0%)    | 289.0 KB → 289.0 KB (+0.0%)    | 289.0 KB → 289.0 KB (+0.0%)    | 0.46% → 0.46% (+0.0%)      |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| dev_perf::main                    | 1 → 1 (+0.0%)            | 35.9 KB → 35.9 KB (+0.0%)    | 35.9 KB → 35.9 KB (+0.0%)      | 35.9 KB → 35.9 KB (+0.0%)    | 35.9 KB → 35.9 KB (+0.0%)      | 35.9 KB → 35.9 KB (+0.0%)      | 35.9 KB → 35.9 KB (+0.0%)      | 0.06% → 0.06% (+0.0%)      |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| runner::run_scope                 | 32025 → 32025 (+0.0%)    | 0 B → 0 B (+0.0%)            | 52 B → 52 B (+0.0%)            | 88 B → 88 B (+0.0%)          | 492 B → 492 B (+0.0%)          | 492 B → 492 B (+0.0%)          | 1.2 KB → 1.2 KB (+0.0%)        | 0.00% → 0.00% (+0.0%)      |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| effect cascade                    | 3 → 3 (+0.0%)            | 0 B → 0 B (+0.0%)            | 0 B → 0 B (+0.0%)              | 0 B → 0 B (+0.0%)            | 0 B → 0 B (+0.0%)              | 0 B → 0 B (+0.0%)              | 0 B → 0 B (+0.0%)              | 0.00% → 0.00% (+0.0%)      |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+
| runner::handle_events_immediately | 3 → 3 (+0.0%)            | 0 B → 0 B (+0.0%)            | 0 B → 0 B (+0.0%)              | 0 B → 0 B (+0.0%)            | 0 B → 0 B (+0.0%)              | 0 B → 0 B (+0.0%)              | 0 B → 0 B (+0.0%)              | 0.00% → 0.00% (+0.0%)      |
+-----------------------------------+--------------------------+------------------------------+--------------------------------+------------------------------+--------------------------------+--------------------------------+--------------------------------+----------------------------+

Threads

Total Alloc: 652.7 KB → 820.5 KB (+25.7%) ⚠️
Total Dealloc: 624 B → 696 B (+11.5%)
Mem Diff: 652.1 KB → 819.8 KB (+25.7%) ⚠️

+-----------------+-----------------------------------+-----------+----------------------------------+--------------------------+----------------------------------+
| Thread          | CPU % Avg                         | CPU % Max | Alloc                            | Dealloc                  | Mem Diff                         |
+-----------------+-----------------------------------+-----------+----------------------------------+--------------------------+----------------------------------+
| dev_perf        | 104742.00% → 96273.10% (-8.1%)    |           | 652.5 KB → 819.9 KB (+25.7%) ⚠️  | 576 B → 576 B (+0.0%)    | 651.9 KB → 819.3 KB (+25.7%) ⚠️  |
+-----------------+-----------------------------------+-----------+----------------------------------+--------------------------+----------------------------------+
| hp-server       | 0.00% → 0.00% (+0.0%)             |           | 216 B → 624 B (+188.9%) ⚠️       | 24 B → 24 B (+0.0%)      | 192 B → 600 B (+212.5%) ⚠️       |
+-----------------+-----------------------------------+-----------+----------------------------------+--------------------------+----------------------------------+
| hp-cpu-baseline | 0.00% → 0.00% (+0.0%)             |           | 15 B → 15 B (+0.0%)              | 24 B → 24 B (+0.0%)      | -9 B → -9 B (+0.0%)              |
+-----------------+-----------------------------------+-----------+----------------------------------+--------------------------+----------------------------------+
| hp-functions    | 0.00% → 0.00% (+0.0%)             |           |                                  |                          |                                  |
+-----------------+-----------------------------------+-----------+----------------------------------+--------------------------+----------------------------------+
| hp-threads      | 0.00% → 0.00% (+0.0%)             |           |                                  |                          |                                  |
+-----------------+-----------------------------------+-----------+----------------------------------+--------------------------+----------------------------------+

Generated with hotpath-rs

@github-actions

github-actions Bot commented May 30, 2026

Copy link
Copy Markdown

Performance Comparison mainfeat/image-viewer-optimizations

Total Elapsed Time: 61.20ms → 64.93ms (+6.1%)
CPU Baseline: 90.61µs → 78.42µs (-13.5%)
Benchmark ID: timing

timing - Execution duration of functions.

+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| Function                          | Calls                    | Avg                              | P33                               | P66                              | P95                              | P99                              | Total                            | % Total                      |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| dev_perf::main                    | 1 → 1 (+0.0%)            | 60.96ms → 64.66ms (+6.1%)        | 60.98ms → 64.68ms (+6.1%)         | 60.98ms → 64.68ms (+6.1%)        | 60.98ms → 64.68ms (+6.1%)        | 60.98ms → 64.68ms (+6.1%)        | 60.96ms → 64.66ms (+6.1%)        | 100.00% → 100.00% (+0.0%)    |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| runner::run_scope                 | 32025 → 32025 (+0.0%)    | 1.26µs → 1.28µs (+1.6%)          | 10.00ns → 10.00ns (+0.0%)         | 20.00ns → 20.00ns (+0.0%)        | 20.00ns → 20.00ns (+0.0%)        | 31.00ns → 30.00ns (-3.2%)        | 40.28ms → 41.04ms (+1.9%)        | 66.08% → 63.47% (-3.9%)      |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| runner::sync_and_update           | 3 → 3 (+0.0%)            | 11.08ms → 11.21ms (+1.2%)        | 6.76ms → 6.73ms (-0.4%)           | 7.77ms → 7.84ms (+0.9%)          | 18.71ms → 19.09ms (+2.0%)        | 18.71ms → 19.09ms (+2.0%)        | 33.23ms → 33.64ms (+1.2%)        | 54.52% → 52.02% (-4.6%)      |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| tree::apply_mutations             | 3 → 3 (+0.0%)            | 8.85ms → 9.90ms (+11.9%)         | 1.79ms → 2.60ms (+45.3%) ⚠️       | 8.55ms → 10.56ms (+23.5%) ⚠️     | 16.22ms → 16.56ms (+2.1%)        | 16.22ms → 16.56ms (+2.1%)        | 26.55ms → 29.71ms (+11.9%)       | 43.56% → 45.95% (+5.5%)      |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| mutations run                     | 3 → 3 (+0.0%)            | 3.90ms → 4.58ms (+17.4%)         | 2.60µs → 3.82µs (+46.9%) ⚠️       | 3.14ms → 3.17ms (+1.0%)          | 8.55ms → 10.56ms (+23.5%) ⚠️     | 8.55ms → 10.56ms (+23.5%) ⚠️     | 11.69ms → 13.73ms (+17.5%)       | 19.18% → 21.24% (+10.7%)     |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| path_element::from_element        | 32025 → 32025 (+0.0%)    | 330.00ns → 333.00ns (+0.9%)      | 20.00ns → 20.00ns (+0.0%)         | 30.00ns → 30.00ns (+0.0%)        | 40.00ns → 40.00ns (+0.0%)        | 50.00ns → 50.00ns (+0.0%)        | 10.57ms → 10.68ms (+1.0%)        | 17.35% → 16.52% (-4.8%)      |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| path_element::diff                | 32025 → 32025 (+0.0%)    | 324.00ns → 331.00ns (+2.2%)      | 30.00ns → 30.00ns (+0.0%)         | 50.00ns → 50.00ns (+0.0%)        | 160.00ns → 160.00ns (+0.0%)      | 632.00ns → 541.00ns (-14.4%)     | 10.38ms → 10.61ms (+2.2%)        | 17.04% → 16.41% (-3.7%)      |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| Scope Rendering                   | 2 → 2 (+0.0%)            | 4.52ms → 4.60ms (+1.8%)          | 4.37ms → 4.44ms (+1.6%)           | 4.68ms → 4.76ms (+1.7%)          | 4.68ms → 4.76ms (+1.7%)          | 4.68ms → 4.76ms (+1.7%)          | 9.05ms → 9.21ms (+1.8%)          | 14.85% → 14.24% (-4.1%)      |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| runner::apply_diff                | 6 → 6 (+0.0%)            | 1.30ms → 1.33ms (+2.3%)          | 7.79µs → 7.54µs (-3.2%)           | 1.79ms → 1.86ms (+3.9%)          | 2.36ms → 2.32ms (-1.7%)          | 2.36ms → 2.32ms (-1.7%)          | 7.82ms → 7.97ms (+1.9%)          | 12.82% → 12.32% (-3.9%)      |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| dirty run                         | 3 → 3 (+0.0%)            | 1.81ms → 1.85ms (+2.2%)          | 191.00ns → 521.00ns (+172.8%) ⚠️  | 1.64µs → 2.23µs (+36.0%) ⚠️      | 5.44ms → 5.54ms (+1.8%)          | 5.44ms → 5.54ms (+1.8%)          | 5.44ms → 5.54ms (+1.8%)          | 8.92% → 8.57% (-3.9%)        |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| layer cascade                     | 3 → 3 (+0.0%)            | 1.43ms → 1.73ms (+21.0%) ⚠️      | 161.00ns → 141.00ns (-12.4%)      | 1.78ms → 2.59ms (+45.5%) ⚠️      | 2.51ms → 2.59ms (+3.2%)          | 2.51ms → 2.59ms (+3.2%)          | 4.30ms → 5.18ms (+20.5%) ⚠️      | 7.05% → 8.01% (+13.6%)       |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| text style cascade                | 3 → 3 (+0.0%)            | 1.66ms → 1.70ms (+2.4%)          | 131.00ns → 151.00ns (+15.3%)      | 1.23µs → 2.15µs (+74.8%) ⚠️      | 4.97ms → 5.09ms (+2.4%)          | 4.97ms → 5.09ms (+2.4%)          | 4.97ms → 5.09ms (+2.4%)          | 8.16% → 7.88% (-3.4%)        |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| runner::handle_events_immediately | 3 → 3 (+0.0%)            | 283.00ns → 356.00ns (+25.8%) ⚠️  | 250.00ns → 250.00ns (+0.0%)       | 290.00ns → 370.00ns (+27.6%) ⚠️  | 310.00ns → 450.00ns (+45.2%) ⚠️  | 310.00ns → 450.00ns (+45.2%) ⚠️  | 850.00ns → 1.07µs (+25.9%) ⚠️    | 0.00% → 0.00% (+0.0%)        |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+
| effect cascade                    | 3 → 3 (+0.0%)            | 226.00ns → 284.00ns (+25.7%) ⚠️  | 170.00ns → 221.00ns (+30.0%) ⚠️   | 190.00ns → 290.00ns (+52.6%) ⚠️  | 320.00ns → 341.00ns (+6.6%)      | 320.00ns → 341.00ns (+6.6%)      | 680.00ns → 852.00ns (+25.3%) ⚠️  | 0.00% → 0.00% (+0.0%)        |
+-----------------------------------+--------------------------+----------------------------------+-----------------------------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+------------------------------+

Threads

+-----------------+--------------------------------------+-----------+
| Thread          | CPU % Avg                            | CPU % Max |
+-----------------+--------------------------------------+-----------+
| dev_perf        | 77733.20% → 775399.50% (+897.5%) ⚠️  |           |
+-----------------+--------------------------------------+-----------+
| hp-functions    | 0.00% → 0.00% (+0.0%)                |           |
+-----------------+--------------------------------------+-----------+
| hp-threads      | 0.00% → 0.00% (+0.0%)                |           |
+-----------------+--------------------------------------+-----------+
| hp-server       | 0.00% → 0.00% (+0.0%)                |           |
+-----------------+--------------------------------------+-----------+
| hp-cpu-baseline | 0.00% → 0.00% (+0.0%)                |           |
+-----------------+--------------------------------------+-----------+

Generated with hotpath-rs

@codecov

codecov Bot commented May 30, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 71.42857% with 20 lines in your changes missing coverage. Please review.
✅ Project coverage is 60.41%. Comparing base (5a852b5) to head (241c1b0).
⚠️ Report is 6 commits behind head on main.

Files with missing lines Patch % Lines
crates/freya-components/src/image_viewer.rs 81.35% 11 Missing ⚠️
crates/freya-winit/src/window.rs 0.00% 8 Missing ⚠️
crates/freya-winit/src/renderer.rs 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1925      +/-   ##
==========================================
- Coverage   60.75%   60.41%   -0.34%     
==========================================
  Files         323      326       +3     
  Lines       41092    41923     +831     
==========================================
+ Hits        24964    25328     +364     
- Misses      16128    16595     +467     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement 🔥 New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

enhancement: Image optimizations in NetworkImage

1 participant