perf: benchmark regional simulation scale

This commit is contained in:
Rijad Zuzo
2026-08-12 21:38:10 +02:00
parent 5cf5cfa1db
commit 5a70aaaded
9 changed files with 837 additions and 0 deletions
@@ -0,0 +1,98 @@
extends GutTest
const BenchmarkScript := preload("res://simulation/benchmark/RegionalScaleBenchmark.gd")
func test_exact_regional_workload_round_trips_and_conserves_membership() -> void:
var benchmark := BenchmarkScript.new()
var state := benchmark.build_fixture(BenchmarkScript.FIXED_SEED)
assert_not_null(state)
var audit := benchmark.audit_fixture(state)
assert_true(audit["valid"])
assert_eq(state.get_all_locations().size(), 5)
assert_eq(state.get_all_settlements().size(), 5)
assert_eq(state.get_all_mobile_groups().size(), 20)
assert_eq(audit["detailed_caravan_member_count"], 240)
assert_eq(audit["named_person_count"], 2000)
assert_eq(audit["cohort_resident_count"], 50000)
assert_eq(audit["total_headcount"], 52000)
for group in state.get_all_mobile_groups():
assert_eq(group.get_detailed_member_ids().size(), 12)
assert_eq(state.get_persons_in_group(group.get_group_id()).size(), 12)
var serialized := state.to_dictionary()
var restored := RegionalWorldState.from_dictionary(serialized)
assert_not_null(restored)
assert_eq(restored.to_dictionary(), serialized)
assert_eq(restored.checksum(), state.checksum())
assert_almost_eq(
float(benchmark.audit_fixture(restored)["cargo_total"]), float(audit["cargo_total"]), 0.0001
)
func test_scheduler_budgets_and_three_repeats_preserve_order_and_checksum() -> void:
var benchmark := BenchmarkScript.new()
var budget_one := benchmark.run(1)
var budget_eight := benchmark.run(8)
var budget_eight_repeat_a := benchmark.run(8)
var budget_eight_repeat_b := benchmark.run(8)
var unlimited := benchmark.run(RegionalJobScheduler.UNLIMITED_BUDGET)
for result in [
budget_one, budget_eight, budget_eight_repeat_a, budget_eight_repeat_b, unlimited
]:
_assert_valid_result(result)
for result in [budget_one, unlimited, budget_eight_repeat_a, budget_eight_repeat_b]:
assert_eq(result["execution_order"], budget_eight["execution_order"])
assert_eq(result["execution_order_checksum"], budget_eight["execution_order_checksum"])
assert_eq(result["final_checksum"], budget_eight["final_checksum"])
assert_eq(result["fixture_checksum"], budget_eight["fixture_checksum"])
assert_eq(result["regional_state_bytes"], budget_eight["regional_state_bytes"])
assert_eq(budget_one["drain_batches"], budget_one["initial_job_count"])
assert_eq(budget_one["max_batch_size"], 1)
assert_eq(budget_eight["drain_batches"], ceili(float(budget_eight["initial_job_count"]) / 8.0))
assert_eq(budget_eight["max_batch_size"], 8)
assert_eq(unlimited["drain_batches"], 1)
assert_eq(unlimited["max_batch_size"], unlimited["initial_job_count"])
func _assert_valid_result(result: Dictionary) -> void:
assert_false(result.is_empty())
if result.is_empty():
return
assert_eq(result["schema_version"], 1)
assert_eq(StringName(result["workload_id"]), &"regional_records_scheduler_v1")
assert_eq(result["benchmark_scope"], "regional_data_and_scheduler_only")
assert_false(result["rendered_throughput_measured"])
assert_false(result["full_economy_throughput_measured"])
assert_eq(result["seed"], 424242)
assert_eq(result["location_count"], 5)
assert_eq(result["settlement_count"], 5)
assert_eq(result["caravan_count"], 20)
assert_eq(result["detailed_members_per_caravan"], 12)
assert_eq(result["detailed_caravan_member_count"], 240)
assert_eq(result["named_person_count"], 2000)
assert_eq(result["cohort_resident_count"], 50000)
assert_eq(result["total_headcount"], 52000)
assert_eq(result["max_active_visuals"], 40)
assert_true(result["fixture_valid"])
assert_true(result["roundtrip_valid"])
assert_true(result["headcount_conserved"])
assert_true(result["cargo_conserved"])
assert_eq(result["initial_job_count"], 2025)
assert_eq(result["executed_job_count"], 2025)
assert_eq(result["backlog_initial"], 2025)
assert_eq(result["backlog_peak"], 2025)
assert_eq(result["backlog_final"], 0)
assert_gt(result["regional_state_bytes"], 0)
assert_gt(result["scheduler_state_bytes"], 0)
for timing_key in [
"fixture_build_usec",
"roundtrip_usec",
"scheduler_build_usec",
"execution_usec",
"elapsed_usec",
]:
assert_gt(result[timing_key], 0)
assert_eq(String(result["fixture_checksum"]).length(), 64)
assert_eq(String(result["execution_order_checksum"]).length(), 64)
assert_eq(String(result["final_checksum"]).length(), 64)
@@ -0,0 +1 @@
uid://crgxogf0ldlki