Skip to content

Add profiling setup using geodepot#86

Merged
balazsdukai merged 6 commits into
developfrom
tyler-83-grid
Apr 28, 2026
Merged

Add profiling setup using geodepot#86
balazsdukai merged 6 commits into
developfrom
tyler-83-grid

Conversation

@balazsdukai

Copy link
Copy Markdown
Contributor

Overview

This branch splits into two main themes:

  1. profiling infrastructure for repeatable large-input runs
  2. pre-write performance work in the CityJSON-to-GLB pipeline

It also adds supporting documentation for the profiling workflow, the performance investigation, and the associated optimization decision record.

Profiling Workflow

  • Added a repo-local just profile entrypoint and scripts/profile-tyler.sh.
  • Integrated profiling by Geodepot case name, where the case spec resolves both:
    • the input dataset path via geodepot get <case spec>
    • the case-specific profile-tyler.json data item via the case root
  • Added support for selecting which profiler runs:
    • --runner perf
    • --runner massif
    • --runner all by default
  • Preserved failed profiling runs so long Massif sessions can be inspected without rerunning them.
  • Wrote structured per-run output under docs/performance/runs/ with:
    • manifest.json
    • perf-stat.json
    • massif-summary.json
    • summary.md

Performance Changes

  • Reduced allocations in the grid-counting and tile-preparation path.
  • Added a faster path for direct unique cell assignment in the grid counter.
  • Skipped no-op tile-preparation work when it cannot affect GLB output.
  • Added timing and count logging around the main hot spots so future profiling is easier to interpret.
  • Improved glTF writer and CLI logging to support debugging and profiling.

- Added grid/indexing and tile-export timing logs around cjindex pages, stats, cell counting, merge, feature reads, preparation, and GLB conversion.
- Added a unique-assignment fast path for Building/BuildingPart that chooses the winning cell without materializing full bbox CellCounts: src/parser.rs:690.
- Added per-feature needs_type_filter tracking so tile prep can skip no-op type filtering: src/parser.rs:498.
- Skipped no-op empty-geometry cleanup and removed pre-GLB merged-model cleanup_and_update_extents: src/main.rs:604, src/main.rs:695.
- Added parity tests for unique grid assignment and prep-skip behavior.
@balazsdukai
balazsdukai merged commit 32f5ab0 into develop Apr 28, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant