Documentation / Systems

Performance & Reliability

Conduit optimizations, performance goals, and batched processing for scale.

Wrengler is built to keep Rhino responsive on large models — through viewport conduit optimizations, batched processing, and careful lock management.

Performance Goals

Design goals, not measured guarantees:

ComponentGoal
Conduit drawStay within the ~16ms frame budget (60 FPS)
Panel openNo freeze on large documents — the index rebuilds in chunks
BridgeKeep the UI thread free; requests time out rather than hang

Viewport Conduits

Display conduits paint study results — heatmaps and sightlines — on top of your geometry, optimized for large sensor grids and real-time interaction:

  • Batched drawing — results are drawn in bulk, so draw cost stays flat as sensor counts grow.
  • Dynamic detail — reduced during pan/zoom/rotate, restored when the view settles.
  • Pre-computed geometry — built once when results are set, not in the draw loop.
  • Snapshot pattern — draw works from a snapshot, so the update thread can replace results without blocking.
  • Lock separation — enable/disable never blocks the draw thread or data updates.

Large Documents & Selections

  • Panel open — the working index builds in chunks, yielding between them so Rhino stays responsive.
  • Many selected objects — geometry is processed in batches off the UI thread; only the latest request's result is kept, and earlier ones are cancelled to avoid backlog.

Engine Verification

Every backend below the seam is checked against the brute-force CPU reference, which is itself verified against closed-form physics. A faster backend is only used because it gives the same answer.