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.