Skip to content

Stress Attribute Heavy Heterogenous

Deterministic synthetic case (seed 3001) with 1000 Building objects, 60 flat heterogenous-type attributes per object, and a single-surface MultiSurface geometry at LoD 2. No semantics, materials, or textures. The same attribute key can have different value types across CityObjects; null is included in the random type pool. Targets attribute map allocation, key string interning, and parse/serialize throughput with type-dispatch pressure. Hardware load: CPU (JSON key hashing, value type dispatch), RAM (60k attribute key-value pairs). Architecture bottleneck: hash map resize, key interning, and per-value type dispatch. Data model bottleneck: flat attribute record size at 60 keys per object.

Case

  • id: stress_attribute_heavy_heterogenous
  • layer: workload
  • family: stress
  • artifact_mode: generated
  • source_kind: synthetic
  • representation: cityjson
  • path: cases/workloads/stress_attribute_heavy_heterogenous

Files

  • generated: artifacts/generated/stress_attribute_heavy_heterogenous.city.json
  • profile: cases/workloads/stress_attribute_heavy_heterogenous/profile.json

Source JSON

case.json

{
  "artifact_mode": "generated",
  "artifact_paths": {
    "generated": "artifacts/generated/stress_attribute_heavy_heterogenous.city.json",
    "profile": "cases/workloads/stress_attribute_heavy_heterogenous/profile.json"
  },
  "assertions": [
    "attributes_preserved",
    "bottleneck_shape_visible"
  ],
  "cityjson_version": "2.0",
  "description": "Deterministic synthetic case (seed 3001) with 1000 Building objects, 60 flat heterogenous-type attributes per object, and a single-surface MultiSurface geometry at LoD 2. No semantics, materials, or textures. The same attribute key can have different value types across CityObjects; null is included in the random type pool. Targets attribute map allocation, key string interning, and parse/serialize throughput with type-dispatch pressure. Hardware load: CPU (JSON key hashing, value type dispatch), RAM (60k attribute key-value pairs). Architecture bottleneck: hash map resize, key interning, and per-value type dispatch. Data model bottleneck: flat attribute record size at 60 keys per object.",
  "family": "stress",
  "geometry_kind": "dummy",
  "id": "stress_attribute_heavy_heterogenous",
  "layer": "workload",
  "representation": "cityjson",
  "source_kind": "synthetic",
  "version": 2
}

invariants.json

{
  "checks": [
    {
      "description": "All 60 attributes per CityObject survive encode/decode without loss. Null values and mixed scalar types across objects are preserved.",
      "id": "attributes_preserved"
    },
    {
      "description": "The case exposes the intended attribute allocation shape (60k key-value pairs across 1000 objects).",
      "id": "bottleneck_shape_visible"
    }
  ],
  "id": "stress_attribute_heavy_heterogenous",
  "kind": "positive",
  "version": 1
}

profile.json

{
  "cases": [
    {
      "allowed_lods": [
        "2"
      ],
      "allowed_types_cityobject": [
        "Building"
      ],
      "allowed_types_geometry": [
        "MultiSurface"
      ],
      "attributes_allow_null": true,
      "attributes_enabled": true,
      "attributes_max_depth": 1,
      "attributes_random_keys": true,
      "attributes_value_mode": "heterogenous",
      "description": "60 flat heterogenous-type attributes per Building across 1000 objects. The same attribute key can have different value types across CityObjects; null is included in the random type pool. Minimal single-surface geometry. No semantics, materials, or textures.",
      "id": "stress_attribute_heavy_heterogenous",
      "materials_enabled": false,
      "max_attributes": 60,
      "max_cityobjects": 1000,
      "max_members_cityobject_geometries": 1,
      "max_members_multisurface": 1,
      "min_attributes": 60,
      "min_cityobjects": 1000,
      "min_members_cityobject_geometries": 1,
      "min_members_multisurface": 1,
      "seed": 3001,
      "semantics_enabled": false,
      "textures_enabled": false
    }
  ],
  "purpose": "Stress fixture for attribute map allocation and parse/serialize throughput with heterogenous value types.",
  "version": 1
}