Skip to content

Workload Cases

Larger cases used to compare throughput, memory use, and storage layout effects.

This section contains 12 cases. Each item links to the full case page.

Cases

  • io_3dbag_cityjson: Real-geometry 3DBAG slice stored as a single monolithic CityJSON file. Baseline for sequential I/O, parser throughput, and whole-document memory behavior.
  • io_3dbag_cityjson_cluster_4x: Real-geometry 3DBAG workload built from four merged contiguous tiles. Extends the single-tile io_3dbag_cityjson baseline to a larger whole-document input for memory and throughput comparisons.
  • io_3dbag_feature_files: Real-geometry 3DBAG slice stored as one file per feature. Targets filesystem access patterns including open/close overhead, metadata lookup, and random versus sequential access.
  • io_3dbag_jsonl: Real-geometry 3DBAG slice stored as JSONL. Targets stream-oriented parsing, record framing overhead, and streaming memory behavior as a counterpart to the monolithic io_3dbag_cityjson case.
  • io_basisvoorziening_3d_cityjson: Real-geometry Basisvoorziening 3D tile stored as a single monolithic CityJSON file. A larger terrain-inclusive alternative to the io_3dbag_cityjson baseline, from the 2022 PDOK collection.
  • 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.
  • 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.
  • stress_boundary_heavy: Deterministic synthetic case (seed 3004) with 1000 Building objects each carrying one CompositeSolid geometry with 4-6 solid members and 4-6 shells per solid. No attributes, semantics, materials, or textures. Targets deep boundary recursion and stack/heap pressure. Hardware load: CPU (recursive traversal), stack depth pressure, heap for shell arrays. Architecture bottleneck: CompositeSolid -> Solid -> Shell -> Ring traversal. Data model bottleneck: nested boundary reference chains at each containment level.
  • stress_geometry_heavy: Deterministic synthetic case (seed 3003) with 1000 Building objects each carrying 4 MultiSurface geometries at LoDs 0-3 (4000 geometry records total). No attributes, semantics, materials, or textures. Targets multi-LoD geometry dispatch and geometry array allocation. Hardware load: CPU (geometry type dispatch per LoD), memory for 4x geometry arrays per object. Architecture bottleneck: LoD index maintenance and geometry iteration. Data model bottleneck: 4 geometry structs per CityObject.
  • stress_hierarchy_heavy: Deterministic synthetic case (seed 3002) with 1000 CityObjects across two hierarchy levels (Building parents + BuildingPart children, 2-4 children per parent). Each object has minimal MultiPoint geometry with semantic surfaces. No attributes, materials, or textures. Targets parent-child graph traversal and semantic surface resolution. Hardware load: CPU (pointer chasing), cache misses from scattered object references. Architecture bottleneck: children/parents reference resolution. Data model bottleneck: two-level object graph with semantic mapping on minimal geometry.
  • stress_resource_heavy: Deterministic synthetic case (seed 3006) with 1000 Building objects each carrying one Solid geometry (2-4 shells) with semantics, 2-4 materials, and 2-4 textures simultaneously. No attributes. Targets combined appearance and semantic annotation parsing. Hardware load: CPU (multi-path parsing for semantics + materials + textures), RAM for appearance tables. Architecture bottleneck: combined appearance initialisation and material/texture theme co-resolution. Data model bottleneck: per-surface triple annotation (semantics + material index + texture coordinate) on Solid geometry.
  • 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.