Repository navigation
Stabilize compiler and linter benchmark measurements - #5739
Timothee Guerin (timotheeguerin) wants to merge 4 commits into
Conversation
|
No changes needing a change description found. |
📦 Package size report✅ No notable package size changes compared to the base branch. 14 package(s) with no notable change
Packed = gzipped |
|
Completed the local cold-process versus warmed-process runtime comparison with the same pinned service inputs and 25 measured compilations + 3 warmups:
These are local macOS / Node 26 observations, not controlled CI measurements or a promised speedup. The machine was shared, and the Compute runs overlapped other development checks. Noise retries were disabled to compare the same sample counts; CI can append its configured retries. Emitter workloads were not changed or included in these times. Warmup is not a complete cure for noise: the paired Network run's linter CV increased from 11.6% to 22.9%, while Web decreased from 28.1% to 21.6%. This is why the PR retains raw points, excludes unresolved noisy runs from compiler baseline comparisons, and documents the need for dedicated hardware rather than claiming uniformly stable measurements on shared runners. |
|
You can try these changes here
|
The Azure-services linter dashboard mixes changes in compiler performance with changes in workloads and machines. Its warmups also ran in processes that exited before measurement, so they never warmed the measured compiler's JIT or modules.
Keep 25 measurements + 3 warmups, but run each compiler workload in one isolated process, with a fresh Program and GC before each compilation. Emitter sampling and process isolation stay unchanged. The compiler noise gate now checks linter variability as well as total compilation time.
Pin the service corpus, published C# emitter and Ubuntu release; retain source revisions, per-worker CPU details and variability in history. Baselines only compare matching environments, using the emitter's own runner for emitter metrics. Raw points remain visible, but charts no longer connect incompatible measurements or treat unresolved compiler noise as a regression. Also restore collection by declaring the workspace
@typespec/http-clientpeer required by the pinned C# backend.Methodology change: new results are marked
split-warmand start a separate baseline from earlier cold measurements. Existing history is not rewritten or smoothed. Shared hosted runners can still vary; a dedicatedBENCHMARK_RUNNERis needed for tighter hardware control.