ReviewOS

zig-utils/zig-js

Perf: skip no-op nursery finalizers for inline objects

#113
Closed chris opened this 11 days ago ·
11 days ago

Parent: #62\nRelated: #111, zig-utils/zig-gc#21\nDependency: zig-utils/zig-gc#22\n\nThe object-churn profile is dominated by minor collection and sweep. Benchmark literals fit in the Object cell inline slots and usually own no external backing, ArrayBuffer storage, private-brand storage, or finalizer telemetry, but every dead cell still enters the full binding finalizer dispatch.\n\nUse zig-gc’s optional finalizer-elision hook to cheaply identify resource-free ordinary objects and other no-op kinds while preserving finalization for all externally owned state and telemetry. Acceptance: exact benchmark checksums, finalizer/accounting tests, focused and full correctness, TSan, no material regression in other comparison rows or shared scaling, and refreshed report/raw/README results with linked commits.

11 days ago

Closing without a merge after order-balanced A/B rounds failed the no-regression gate. The initial screen improved, but paired five-round medians were +7.893 ms direct and +7.228 ms at 8 independent lanes (candidate minus baseline), with high variance. The hook and consumer changes are fully reverted.

Sign in to comment on this issue.