Roadmap 0.10, Performance roadmap — wave 3

PERF.25 Scale: point clouds pass 2 GB, but the octree merge is single-threaded, LAZ copies the whole file into WASM and E57 is one 512 MB buffer (extends PERF.10)

  • Fix
  • Planned
  • CadCraft
  • BimCraft
  • CivilCraft

Measured with lib/pointcloud (tools/perf/gen/gen-las.mjs made 50 M and 100 M point LAS files): 212 MB/10.6 M points 5.5 s, 954 MB/50 M 36.5 s, 1.9 GB/100 M 59.5 s with 3.8 GB in the in-memory store. This is the one path that reads a 2 GB user file without holding it (file-backed Blob, 2 MB windows, OPFS/IndexedDB store, packed octree nodes, transferred worker replies). The merge step is 70 % of the time (2.2 s, 25 s, 42 s) and runs on one thread; LAZ allocates the whole file in the WASM heap (las.js:187-197 _malloc(file.size)); E57 reads one 512 MB buffer (e57.js:440). So a 2 GB LAZ or a 600 MB E57 fails where the LAS passes. Change: merge across a worker pool (subtrees are independent), LAZ chunk-table streaming through a bounded heap window, E57 section slicing.

Add a comment

Community comments

No comments yet

Add detail as we go: how you would use it, files or steps that show the problem, what other programs do. The team reads every comment.

Sign in or create a free account to add a comment.