perf(xref): fix O(n²) AcDs parse and skip host re-tessellation
Opening a drawing that xrefs several 3D-heavy DWGs (e.g. Clinic.dwg with 5 discipline files) took ~137s, effectively all of it inside the DWG parser's AcDs SAB blob extraction. Bump the acadrust pin to ceef045, which bounds the AcDs end-marker search so a missing marker family no longer scans the whole buffer per record. Total xref resolve for Clinic.dwg drops from ~97s to ~4s. Also make the post-xref mesh pass incremental: the host solids were already tessellated by the background loader and the merge assigns fresh handles to every imported entity, so `populate_missing_meshes_from_document` keeps the cached host meshes and tessellates only the merged xref solids instead of clearing and rebuilding the whole document. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
cbf454979d
commit
13de968ee9
3 changed files with 37 additions and 7 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -71,7 +71,7 @@ checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618"
|
|||
[[package]]
|
||||
name = "acadrust"
|
||||
version = "0.4.0"
|
||||
source = "git+https://github.com/HakanSeven12/acadrust?branch=main#f76e41adb47b09c66b3032d3727468e4303bcaf0"
|
||||
source = "git+https://github.com/HakanSeven12/acadrust?branch=main#ceef045ed9fe4658dfb1ad488fe12f65c0311135"
|
||||
dependencies = [
|
||||
"ahash 0.8.12",
|
||||
"anyhow",
|
||||
|
|
|
|||
Loading…
Reference in a new issue