Speed up cold document geometry rebuilds
This commit is contained in:
1 parent
6dd202d277
commit
400f200efa
9 files changed
+443
-35
No files matched your search
@@ -1,5 +1,43 @@
|
||||
# Design loading
|
||||
|
||||
## Cold geometry rebuilds after 0.3.1
|
||||
|
||||
Three alternating cold-process comparisons on the same Windows machine and optimized
|
||||
`ci` profile, with no concurrent build, compare the unchanged 0.3.1 source with the
|
||||
straight-line projection and exact surface-refinement reuse changes:
|
||||
|
||||
| Saved design | Before, median evaluation | After | Reduction |
|
||||
|---|---:|---:|---:|
|
||||
| Public sensor enclosure, 21 features, 52 KB | 11.96 s | 8.85 s | 26.0% |
|
||||
| Local Pi case assembly, 25 features, 2,990 bodies | 14.75 s | 11.57 s | 21.6% |
|
||||
|
||||
These are geometry rebuild times, not complete desktop opening times. The public fixture
|
||||
can be generated with `solvecraft-cli run examples/acceptance/sensor_enclosure.json
|
||||
--save sensor.solvecraft --quiet`, then measured with `solvecraft-cli bench-open
|
||||
sensor.solvecraft`. Each benchmark starts a new process; this does not measure a warm
|
||||
timeline-cache hit. The local assembly is private and is not part of the repository.
|
||||
|
||||
Straight segments now use guarded algebraic closest-point projection instead of sampling
|
||||
65 points and running Newton iterations. Other curve types retain their existing behavior.
|
||||
Curved-face refinement reuses derivative and midpoint evaluations with exact finite input
|
||||
keys and bounded, local caches. It keeps the original tolerance, seam and singularity
|
||||
checks, refinement passes, and triangle limits.
|
||||
|
||||
Identity assembly placements retain the definition body's shared display-mesh cache.
|
||||
Changed placements continue to build separate meshes in their own coordinates. Face-name
|
||||
preparation remains eager during placement: deferring it merely shifted expensive work to
|
||||
thumbnails and the first face query, so that approach was excluded.
|
||||
|
||||
Both saved fixtures retain exactly the same body names, face/edge/vertex/shell counts,
|
||||
bounds, volumes, and surface areas. Focused tests compare cached and uncached refinement
|
||||
coordinates and normals bit for bit on periodic, singular and transformed surfaces.
|
||||
|
||||
For desktop phase profiling, set `SOLVECRAFT_PROFILE_OPEN=1` before launching the app.
|
||||
Interactive Open reports geometry, placement, tessellation, thumbnail and total worker
|
||||
times to stderr without logging the source path. Thumbnails were about 0.1 seconds of
|
||||
the slow assembly's open and were not the main bottleneck. Further cold Boolean and
|
||||
import costs remain; these changes do not make all documents open instantly.
|
||||
|
||||
`solvecraft-cli bench-open design.solvecraft` reports JSON lines for file reading,
|
||||
JSON decoding and migrations (including input-name repair), timeline evaluation, individual
|
||||
features, and world placement/display meshing. `--parse-only` stops before geometry evaluation.
|
||||
|
||||
Reference in new issue
Block a user