Commit c4c43ab
autoperf: iter53 — saturated, no fresh angle
iter53 baseline wall-clock 6703 ms (runs 4-8 mean). Top leaves identical
to iter47-iter52 within sampling noise:
1.69 EqHashMap.lookup
1.66 SymDenotation.completeFrom
1.64 SingleDenotation.goBack$1
1.56 Type.dealias
1.35 NamedTypeUniques.linkedListLoop$1
1.22 WeakHashSet.linkedListLoop$2 (resize)
1.21 TreeMap.transform
0.94 VariantTraversal.stopBecauseStaticOrLocal
0.90 Substituters.substSym
0.89 Type.widen
0.89 Scopes.MutableScope.lookupEntry
0.87 WeakHashSet.linkedListLoop$1 (removeStaleEntries)
The autoperf loop has reached a stable equilibrium at ~6.7s wall-clock
for mill-javalib (from ~7.2s pre-iter41). Every remaining hot leaf has
been examined multiple times across iter41-52 and the verifier path:
- EqHashMap.lookup: dense-mode tradeoff blocks initial-capacity bumps
- completeFrom / Denotation.info: 32-byte JIT inline budget
- goBack$1: iter43 multi-step reverted (setDenot reshuffle); singleton
early-exit deemed unmeasurable
- dealias: iter31/33 covered the safe fast paths
- NamedTypeUniques + WeakHashSet rehash: amortized in iter21/25/27;
iter38/42 verified rehash bytecode is goto-0 already
- TreeMap.transform: iter36/41/42/46 ship paths exhausted
- Substituters.substSym: prefix recursion is structurally O(prefix-depth)
- removeStaleEntries: iter21 amortized; iter47 coalesce rejected as
iter21 already captured the bulk
Further wins require architectural changes (member-level Inlining gate,
CheckUnused split, alternate WeakHashSet layout) that are PR-scoped.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent a05a708 commit c4c43ab
0 file changed
0 commit comments