Stress Vertex Heavy
Deterministic synthetic case (seed 3005) with 1000 Building objects each with 33-34 triangulated surfaces (3 vertices, no inner rings), totalling ~100k vertices. MultiSurface geometry at LoD 2. No attributes, semantics, materials, or textures. Targets vertex array allocation and coordinate transform throughput. Hardware load: CPU (coordinate transform for ~100k vertices), memory bandwidth for vertex arrays. Architecture bottleneck: vertex array allocation and scale/offset application. Data model bottleneck: flat vertex array size and index array compactness.
Case
id:stress_vertex_heavylayer:workloadfamily:stressartifact_mode:generatedsource_kind:syntheticrepresentation:cityjsonpath:cases/workloads/stress_vertex_heavy
Files
generated:artifacts/generated/stress_vertex_heavy.city.jsonprofile:cases/workloads/stress_vertex_heavy/profile.json
Source JSON
case.json
{
"artifact_mode": "generated",
"artifact_paths": {
"generated": "artifacts/generated/stress_vertex_heavy.city.json",
"profile": "cases/workloads/stress_vertex_heavy/profile.json"
},
"assertions": [
"vertex_count_preserved",
"bottleneck_shape_visible"
],
"cityjson_version": "2.0",
"description": "Deterministic synthetic case (seed 3005) with 1000 Building objects each with 33-34 triangulated surfaces (3 vertices, no inner rings), totalling ~100k vertices. MultiSurface geometry at LoD 2. No attributes, semantics, materials, or textures. Targets vertex array allocation and coordinate transform throughput. Hardware load: CPU (coordinate transform for ~100k vertices), memory bandwidth for vertex arrays. Architecture bottleneck: vertex array allocation and scale/offset application. Data model bottleneck: flat vertex array size and index array compactness.",
"family": "stress",
"geometry_kind": "dummy",
"id": "stress_vertex_heavy",
"layer": "workload",
"representation": "cityjson",
"source_kind": "synthetic",
"version": 2
}
invariants.json
{
"checks": [
{
"description": "Vertex count and coordinate values are preserved exactly after encode/decode (~100k vertices total).",
"id": "vertex_count_preserved"
},
{
"description": "The case exposes the intended vertex array size shape (33-34 triangulated surfaces per object across 1000 objects).",
"id": "bottleneck_shape_visible"
}
],
"id": "stress_vertex_heavy",
"kind": "positive",
"version": 1
}
profile.json
{
"cases": [
{
"allowed_lods": [
"2"
],
"allowed_types_cityobject": [
"Building"
],
"allowed_types_geometry": [
"MultiSurface"
],
"attributes_enabled": false,
"description": "1000 Building objects each with ~100 vertices (33-34 triangulated surfaces, 3 vertices each). ~100k total vertices. No inner rings, no attributes, semantics, materials, or textures.",
"id": "stress_vertex_heavy",
"materials_enabled": false,
"max_cityobjects": 1000,
"max_members_cityobject_geometries": 1,
"max_members_multisurface": 34,
"max_vertices": 3,
"min_cityobjects": 1000,
"min_members_cityobject_geometries": 1,
"min_members_multisurface": 33,
"min_vertices": 3,
"seed": 3005,
"semantics_enabled": false,
"textures_enabled": false
}
],
"purpose": "Stress fixture for vertex array allocation and coordinate transform throughput.",
"version": 1
}