diff --git a/packages/component/bench/tachometer/bench-krausest.js b/packages/component/bench/tachometer/bench-krausest.js index b25f35312..8fdaa9acc 100644 --- a/packages/component/bench/tachometer/bench-krausest.js +++ b/packages/component/bench/tachometer/bench-krausest.js @@ -334,6 +334,36 @@ for (let i = 0; i < 50; i++) { performance.measure('update-gc-50', startMark('update-gc-50')); destroy(); +/******************************* + Update (aggressive GC) + update-10th workload after krausest's aggressive last-resort major GC. + Pairs against update-gc-50 (plain gc): if this clears the regression + and plain gc does not, create-10k's old-space sizing is reclaimable by + a between-op GC hook. If a residual survives, only a fresh realm + (separate page per op) resets it. +*******************************/ + +const el5c = await mount(); +el5c.component.run(1000); +await flush(); +if (globalThis.gc) { + try { + globalThis.gc({ type: 'major', execution: 'sync', flavor: 'last-resort' }); + } + catch { + globalThis.gc(); + } + await flush(); +} +// purpose: update-10th workload after an aggressive last-resort major GC (krausest's incantation). Pairs with update-gc-50 to test whether aggressive GC reclaims create-10k old-space sizing that a plain gc leaves. +performance.mark(startMark('update-gc-aggressive-50')); +for (let i = 0; i < 50; i++) { + el5c.component.update(); + flushWork(); +} +performance.measure('update-gc-aggressive-50', startMark('update-gc-aggressive-50')); +destroy(); + /******************************* Select (krausest 05_select) diff --git a/packages/component/bench/tachometer/tachometer-ci-krausest.json b/packages/component/bench/tachometer/tachometer-ci-krausest.json index 98cef950d..bd7e9acb0 100644 --- a/packages/component/bench/tachometer/tachometer-ci-krausest.json +++ b/packages/component/bench/tachometer/tachometer-ci-krausest.json @@ -17,6 +17,7 @@ { "mode": "performance", "entryName": "update-10th-50" }, { "mode": "performance", "entryName": "update-isolated-50" }, { "mode": "performance", "entryName": "update-gc-50" }, + { "mode": "performance", "entryName": "update-gc-aggressive-50" }, { "mode": "performance", "entryName": "select-40" }, { "mode": "performance", "entryName": "swap-rows-20" }, { "mode": "performance", "entryName": "remove-row-front-20" }, @@ -37,6 +38,7 @@ { "mode": "performance", "entryName": "update-10th-50" }, { "mode": "performance", "entryName": "update-isolated-50" }, { "mode": "performance", "entryName": "update-gc-50" }, + { "mode": "performance", "entryName": "update-gc-aggressive-50" }, { "mode": "performance", "entryName": "select-40" }, { "mode": "performance", "entryName": "swap-rows-20" }, { "mode": "performance", "entryName": "remove-row-front-20" },