Skip to content

Stress Attribute Heavy Homogenous

Deterministic synthetic case (seed 3007) with 1000 Building objects, 60 flat homogenous-type attributes per object, and a single-surface MultiSurface geometry at LoD 2. No semantics, materials, or textures. Each attribute key has a fixed scalar type (bool, integer, unsigned, float, or string) consistent across all CityObjects; each value has a 1-in-7 chance of being null. Targets attribute map allocation, key string interning, and parse/serialize throughput with schema-stable type pressure. Hardware load: CPU (JSON key hashing), RAM (60k attribute key-value pairs). Architecture bottleneck: hash map resize and key interning. Data model bottleneck: flat attribute record size at 60 keys per object with nullable scalars.

Case

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

Files

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

Source JSON

case.json

{
  "artifact_mode": "generated",
  "artifact_paths": {
    "generated": "artifacts/generated/stress_attribute_heavy_homogenous.city.json",
    "profile": "cases/workloads/stress_attribute_heavy_homogenous/profile.json"
  },
  "assertions": [
    "attributes_preserved",
    "attribute_types_consistent_per_key",
    "bottleneck_shape_visible"
  ],
  "cityjson_version": "2.0",
  "description": "Deterministic synthetic case (seed 3007) with 1000 Building objects, 60 flat homogenous-type attributes per object, and a single-surface MultiSurface geometry at LoD 2. No semantics, materials, or textures. Each attribute key has a fixed scalar type (bool, integer, unsigned, float, or string) consistent across all CityObjects; each value has a 1-in-7 chance of being null. Targets attribute map allocation, key string interning, and parse/serialize throughput with schema-stable type pressure. Hardware load: CPU (JSON key hashing), RAM (60k attribute key-value pairs). Architecture bottleneck: hash map resize and key interning. Data model bottleneck: flat attribute record size at 60 keys per object with nullable scalars.",
  "family": "stress",
  "geometry_kind": "dummy",
  "id": "stress_attribute_heavy_homogenous",
  "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 designated scalar types are preserved.",
      "id": "attributes_preserved"
    },
    {
      "description": "Each attribute key has a consistent scalar type across all CityObjects (homogenous mode invariant).",
      "id": "attribute_types_consistent_per_key"
    },
    {
      "description": "The case exposes the intended attribute allocation shape (60k key-value pairs across 1000 objects).",
      "id": "bottleneck_shape_visible"
    }
  ],
  "id": "stress_attribute_heavy_homogenous",
  "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": "homogenous",
      "description": "60 flat homogenous-type attributes per Building across 1000 objects. Each attribute key has a fixed scalar type (bool, integer, unsigned, float, or string) consistent across all CityObjects; each value has a 1-in-7 chance of being null. Minimal single-surface geometry. No semantics, materials, or textures.",
      "id": "stress_attribute_heavy_homogenous",
      "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": 3007,
      "semantics_enabled": false,
      "textures_enabled": false
    }
  ],
  "purpose": "Stress fixture for attribute map allocation and parse/serialize throughput with homogenous value types.",
  "version": 1
}