Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ensure-labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ jobs:
{ name: "performance-display-spawn", color: "bfdadc", description: "Use the display entity spawn performance profile" },
{ name: "performance-region-queue", color: "bfdadc", description: "Use the region update queue performance profile" },
{ name: "performance-region-keys", color: "bfdadc", description: "Use the region key plan performance profile" },
{ name: "performance-layout", color: "bfdadc", description: "Use the all-variant table layout performance profile" },
{ name: "performance-scheduler-reflection", color: "bfdadc", description: "Use the scheduler reflection performance profile" },
{ name: "performance-ray-proxy", color: "bfdadc", description: "Use the client ray-proxy performance profile" }
];
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/performance-ab.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ on:
- display-spawn
- region-queue
- region-keys
- layout
- scheduler-reflection
- ray-proxy
- infra
Expand Down Expand Up @@ -166,6 +167,7 @@ jobs:
"performance-display-spawn": "display-spawn",
"performance-region-queue": "region-queue",
"performance-region-keys": "region-keys",
"performance-layout": "layout",
"performance-scheduler-reflection": "scheduler-reflection",
"performance-ray-proxy": "ray-proxy",
}
Expand Down
3 changes: 3 additions & 0 deletions docs/performance-testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ and exactly one profile label to a pure performance PR:
slots;
- `performance-region-keys` - all 452 dynamic keys requested while planning one complete
table refresh, with exact text, order, uniqueness and checksum sentinels outside timing;
- `performance-layout` - complete RIICHI, GB and SICHUAN started-table
`TableRenderLayout.precompute` calls covering four occupied seats, hands, discards, melds,
sticks, each variant's full wall capacity and RIICHI dora;
- `performance-scheduler-reflection` - representative global, region and entity scheduling
bursts through both Folia-style reflective capabilities and standard Paper fallbacks;
- `performance-ray-proxy` - 1, 4 and 32-viewer coordinator lifecycle and unchanged-geometry
Expand Down
56 changes: 56 additions & 0 deletions perf/ab/gate-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,26 @@
"top/ellan/mahjong/table/render/TableRegionDisplayCoordinator.class"
]
},
"layout": {
"include": "^top\\.ellan\\.mahjong\\.perf\\.TableRenderLayoutBenchmark\\.precomputeComplete(?:Riichi|Gb|Sichuan)Table$",
"benchmark_ids": [
"layout.riichi.time",
"layout.riichi.alloc",
"layout.gb.time",
"layout.gb.alloc",
"layout.sichuan.time",
"layout.sichuan.alloc"
],
"minimum_passes": 3,
"must_pass": [
"layout.riichi.time",
"layout.gb.time",
"layout.sichuan.time"
],
"required_classes": [
"top/ellan/mahjong/render/layout/TableRenderLayout.class"
]
},
"scheduler-reflection": {
"include": "^top\\.ellan\\.mahjong\\.perf\\.ServerSchedulerReflectionBenchmark\\.schedule(?:Folia|Paper)Burst$",
"benchmark_ids": [
Expand Down Expand Up @@ -334,6 +354,42 @@
"metric": "gc.alloc.rate.norm",
"direction": "lower"
},
{
"id": "layout.riichi.time",
"benchmark": "top.ellan.mahjong.perf.TableRenderLayoutBenchmark.precomputeCompleteRiichiTable",
"metric": "primary",
"direction": "lower"
},
{
"id": "layout.riichi.alloc",
"benchmark": "top.ellan.mahjong.perf.TableRenderLayoutBenchmark.precomputeCompleteRiichiTable",
"metric": "gc.alloc.rate.norm",
"direction": "lower"
},
{
"id": "layout.gb.time",
"benchmark": "top.ellan.mahjong.perf.TableRenderLayoutBenchmark.precomputeCompleteGbTable",
"metric": "primary",
"direction": "lower"
},
{
"id": "layout.gb.alloc",
"benchmark": "top.ellan.mahjong.perf.TableRenderLayoutBenchmark.precomputeCompleteGbTable",
"metric": "gc.alloc.rate.norm",
"direction": "lower"
},
{
"id": "layout.sichuan.time",
"benchmark": "top.ellan.mahjong.perf.TableRenderLayoutBenchmark.precomputeCompleteSichuanTable",
"metric": "primary",
"direction": "lower"
},
{
"id": "layout.sichuan.alloc",
"benchmark": "top.ellan.mahjong.perf.TableRenderLayoutBenchmark.precomputeCompleteSichuanTable",
"metric": "gc.alloc.rate.norm",
"direction": "lower"
},
{
"id": "scheduler.folia.time",
"benchmark": "top.ellan.mahjong.perf.ServerSchedulerReflectionBenchmark.scheduleFoliaBurst",
Expand Down
Loading