perf(style): share inline source text backing - #389
Conversation
Retain inline stylesheet text through shared DOM text backing instead of copying it into the source cache. Fold in the necessary SmolStr Text storage and shared_text_content interface so this branch is one self-contained commit on main. Derived from 6b163b921 and the DOM text prerequisites of 3d324c596. Excludes parser script internal-slot changes, lazy cascade data, import metadata reuse, and diagnostics.
Sequential Navigation Soak A/B✅ HEAD completed the 200-navigation resilience and memory observation. One browser process, one target, and one CDP session navigate CSDN → SegmentFault → Huaban → example.com repeatedly. This run issued 200 Common ancestor Session resilience
A public-page failure is reported separately from an unrecoverable session. The soak requires all navigation attempts, zero failed recovery, zero lifecycle/network ordering violations, and complete resource evidence. Process-tree memory
HEAD memory by 50-navigation quarter
Raw reports and per-navigation boundary samples: workflow run and full Public-site timing and memory are observational. Use the A/B deltas and trend shape as evidence, not as a deterministic performance threshold. |
Spider Bench A/B✅ All benchmark browser service runs completed; results are informational. Public HEAD: 184 / 240 rows; 38 / 48 sites produced rows; 10 unexpected empty sites. ✅ Deterministic fixture contract is clean. Common ancestor Public 48-site run · informational
Public-site content, timing, and memory are noisy. This single A/B run reports evidence only; site outcome counts explain missing rows without treating them as a deterministic regression. CPU and memory timelinesThese are bounded 40-point views of the same complete process-tree samples used by the HTML report. CPU uses 100% per occupied logical core; memory lines are RSS first and PSS second when complete PSS samples are available. Basexychart-beta
title "Base CPU"
x-axis "Elapsed seconds" [1.035, 1.536, 2.538, 3.539, 4.041, 4.541, 5.042, 6.542, 7.545, 9.047, 10.049, 11.55, 13.051, 14.051, 15.555, 16.556, 18.058, 19.058, 20.558, 21.558, 23.059, 24.56, 25.562, 27.063, 28.064, 29.565, 30.567, 32.069, 33.071, 34.573, 36.076, 37.076, 38.578, 39.58, 41.082, 42.084, 43.586, 44.588]
y-axis "CPU percent" 0 --> 200
line [0, 15.97, 123.64, 135.83, 97.71, 133.93, 129.84, 145.9, 143.67, 189.47, 115.68, 130.04, 149.9, 107.94, 55.88, 75.95, 4, 28, 4, 70, 99.94, 135.89, 141.75, 101.86, 133.91, 127.91, 111.85, 95.88, 61.85, 57.85, 65.84, 129.95, 17.98, 7.98, 113.88, 109.74, 57.94, 145.69]
xychart-beta
title "Base memory: RSS then PSS"
x-axis "Elapsed seconds" [0.034, 1.035, 1.536, 2.538, 3.539, 4.041, 4.541, 5.042, 6.542, 7.545, 9.047, 10.049, 11.55, 13.051, 14.051, 15.555, 16.556, 18.058, 19.058, 20.558, 21.558, 23.059, 24.56, 25.562, 27.063, 28.064, 29.565, 30.567, 32.069, 33.071, 34.573, 36.076, 37.076, 38.578, 39.58, 41.082, 42.084, 43.586, 44.588, 45.917]
y-axis "Memory MiB" 0 --> 500
line [11.81, 52.9, 69.03, 110.5, 133.38, 139.56, 144.59, 160.16, 189.22, 163.79, 197.8, 175.91, 182.77, 179.61, 169.45, 165.43, 155.1, 145.69, 145.88, 146.15, 148.43, 171.79, 176.51, 191.87, 222.72, 176.77, 177.7, 175.11, 154.21, 153.55, 156.91, 164.88, 179.01, 179.06, 170.96, 198, 181.55, 169.82, 175.25, 0]
line [8.65, 49.37, 65.49, 106.99, 129.87, 136.32, 140.65, 156.23, 185.6, 160.16, 194.2, 172.34, 179.35, 176.06, 165.79, 161.76, 151.45, 142.14, 142.33, 142.6, 144.89, 168.28, 173.04, 188.09, 219.25, 173.29, 175.34, 169.47, 150.86, 150.04, 153.33, 161.29, 175.49, 175.54, 167.45, 194.12, 178.04, 166.3, 171.76, 0]
HEADxychart-beta
title "HEAD CPU"
x-axis "Elapsed seconds" [1.537, 2.539, 3.04, 4.543, 5.544, 6.045, 7.046, 8.548, 10.05, 11.551, 13.053, 14.556, 16.059, 17.561, 19.063, 20.064, 21.566, 23.067, 24.57, 26.071, 27.573, 29.073, 30.574, 32.077, 32.577, 33.078, 34.58, 36.081, 37.583, 39.086, 40.587, 42.09, 43.59, 45.092, 46.093, 47.594, 49.095, 50.597]
y-axis "CPU percent" 0 --> 500
line [125.84, 143.77, 105.86, 123.7, 233.74, 179.55, 165.81, 77.94, 161.84, 125.9, 135.88, 0, 31.97, 4, 103.91, 87.76, 5.98, 47.96, 59.91, 76.05, 113.81, 109.96, 143.84, 153.81, 115.88, 101.88, 13.96, 73.98, 7.98, 5.98, 101.94, 67.95, 4, 2, 101.86, 171.87, 89.9, 109.89]
xychart-beta
title "HEAD memory: RSS then PSS"
x-axis "Elapsed seconds" [0.035, 1.537, 2.539, 3.04, 4.543, 5.544, 6.045, 7.046, 8.548, 10.05, 11.551, 13.053, 14.556, 16.059, 17.561, 19.063, 20.064, 21.566, 23.067, 24.57, 26.071, 27.573, 29.073, 30.574, 32.077, 32.577, 33.078, 34.58, 36.081, 37.583, 39.086, 40.587, 42.09, 43.59, 45.092, 46.093, 47.594, 49.095, 50.597, 51.878]
y-axis "Memory MiB" 0 --> 500
line [12.08, 106.91, 115.21, 125.98, 164.89, 171.56, 186.26, 174.51, 171.89, 184.45, 189.21, 178.13, 163.62, 143.5, 146.03, 148.99, 152.16, 155.33, 148.4, 144.53, 160.9, 162.69, 188.36, 174.25, 178.05, 211.94, 159.6, 153.46, 149.51, 161.39, 155.25, 205.46, 185.23, 166.23, 158.3, 180.5, 178.15, 168.87, 177.52, 0]
line [8.77, 103.25, 111.54, 122.32, 161.27, 167.93, 180.23, 170.85, 168.66, 180.29, 185.55, 177, 159.95, 139.83, 142.36, 145.33, 148.5, 151.67, 144.74, 140.86, 157.24, 158.36, 184.72, 170.23, 174.51, 208.86, 155.94, 149.8, 145.84, 157.73, 151.58, 204, 181.59, 162.57, 154.65, 176.74, 175.09, 164.37, 174.11, 0]
Deterministic fixture · required contractThe fixture exercises 15 routes: 8 are expected to emit rows and 7 intentionally exercise empty, loading, or timeout behavior.
Full HTML, JSON, CSV, logs, and page snapshots: workflow run and full The public-web A/B is informational. The exact HEAD fixture contract runs as a separate required CI check; timing and public-site content deltas remain non-blocking. |
CI Regression ReportSource CI run · source state at render:
Release regression — ✅ HEAD/base failures 0/0; raw binary +0.005993%Package and image size
Startup latency and PSS
Concurrency matrix
Frontend differential — ✅ 1,020/1,020 cases matched; 0 issues
Agent episodes · Moli vs Chromium — ✅ 8/8 Moli episodes passed; 0 failures
Runtime and CDP session contracts — ✅ 26 contract cases; 0 failures
CDP smoke — ❌ 42/43 groups passed; 441 scenariosWorkers: 4 · cumulative group time: 236.12 s · failed groups: 1
Failed groups
All artifact fields are parsed by the trusted default-branch renderer; missing or invalid inputs remain visible as unavailable. |
Retain inline stylesheet text through shared DOM text backing instead of copying it into the source cache. Fold in the necessary SmolStr Text storage and shared_text_content interface so this branch is one self-contained commit on main.
Derived from 6b163b921 and the DOM text prerequisites of 3d324c596. Excludes parser script internal-slot changes, lazy cascade data, import metadata reuse, and diagnostics.