Skip to content

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_heavy
  • layer: workload
  • family: stress
  • artifact_mode: generated
  • source_kind: synthetic
  • representation: cityjson
  • path: cases/workloads/stress_vertex_heavy

Files

  • generated: artifacts/generated/stress_vertex_heavy.city.json
  • profile: 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
}