Skip to content

perf(las): skip unneeded TypeScript LAZ layers - #3548

Draft
ibgreen wants to merge 1 commit into
masterfrom
codex/laz-selective-columns
Draft

perf(las): skip unneeded TypeScript LAZ layers#3548
ibgreen wants to merge 1 commit into
masterfrom
codex/laz-selective-columns

Conversation

@ibgreen

@ibgreen ibgreen commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Goals

  • Avoid decoding or allocating LAZ fields that the requested Arrow/COPC output does not use.
  • Bring complete-buffer TypeScript PDRF 6-10 parsing onto the optimized direct-Arrow path.
  • Document exact LAS/LASzip/PDRF/streaming support without overclaiming by LAS header version alone.

Changes

  • Make intensity, classification, and RGB independent selections for direct Point14 output and lock the selection per chunk cursor.
  • Skip omitted arithmetic layers and their model allocation for PDRF 6-10.
  • Decode complete modern LAZ files directly into Arrow columns for fixed and variable chunks.
  • Remove unused COPC intensity/classification arrays and decompression.
  • Add selective PDRF 7 parity tests and a COPC render-target benchmark.
  • Replace broad LAZ version claims with codec, PDRF, fixture, output, streaming, and COPC support tables; correct LASWriter documentation.

Performance

On ellipsoid-1.4.laz (PDRF 7):

  • Complete-buffer TypeScript parse improved from 1.23M to 1.61M output points/s in consecutive benchmark runs.
  • Direct positions/RGB output measured 2.19M output points/s versus 1.91M for all exposed Point14 columns.

Benchmark variance was elevated in the second full-suite run. Independently of timing noise, the direct path removes the full raw-record allocation and second point traversal.

Validation

  • yarn build
  • yarn test-node (403 files passed, 1,918 tests passed)
  • yarn test-headless (406 files passed, 1,882 tests passed)
  • yarn lint fix
  • TS_NODE_LOG_ERROR=true yarn test bench las

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