1.6 KiB
Cutting-planner native curve reuse
The opt-in 144-part synthetic grid probe measures only CuttingPlanService.Plan, not build,
fixture creation, assertions, desktop rendering or posting:
OPENNEST_RUN_CUTTING_PERF=1 dotnet test OpenNest.Tests/OpenNest.Tests.csproj -c Release \
--filter 'FullyQualifiedName~ReorderSearchTests.DenseGrid144_PerformanceProbe' \
--logger 'console;verbosity=detailed'
Run separate fresh processes on the same machine with build and filesystem caches warm;
there is no in-process plan/JIT warmup, so these are first-call measurements. Compare
Cutting144 elapsedMs, expansions, status and executionSha256. The hash covers
expanded owned motions (including called hole programs), their layers, rapid flags,
exact coordinate bits, curve type and arc/circle parameters in source order; it does
not claim byte-identical authored G-code flags or post output. The test also requires
a Ready, independently replayed result and exact source-part conservation. Without
the environment flag it skips. Timing is diagnostic, not a deadline assertion.
The native curve wrapper now lazily owns one private native Entity for repeated
contact/containment queries. ToEntity() still makes a fresh object for other callers.
No lead or rapid check is skipped: long-lead/tiny-circle numerical contacts make a
fixed-extent material prefilter unsafe. Retest the cutting-planner and native-contact
regressions, especially near tangencies, repeated/concurrent queries and incomplete
material; do not infer posted NC or machine acceptance from this probe.