Bench the alpha-shape shadow filter against the unfiltered search - #6590
Bench the alpha-shape shadow filter against the unfiltered search#6590meshinspector-agent[bot] wants to merge 2 commits into
Conversation
The filter is output-preserving, so an AlphaShapeData flag turns it off and one binary times the unfiltered search (= master) against it on the same runner and the same cloud, which is the only way the two are comparable on shared CI vCPUs. Reps are capped by count and by wall clock, and the cloud shrinks where NDEBUG is off or under emscripten, so the bench fits the 10-minute unit-test cap. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
gtest skips DISABLED_ tests, and every platform's Unit Tests step already runs MRTest, so dropping the prefix is what makes the numbers appear in all of the run's MRTest jobs without touching a CI file. Reverted once they are collected. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Closing: the decision this harness was built to inform has been made. The floating-point pre-filters it was meant to measure are back in That also makes the table above misleading rather than merely stale — it was measured when every shadow What remains is not worth its price: |
|
Agreed on all three — nothing to reopen.
One loose end that closes with it: the "restore the No code changed, so nothing was built or driven for this reply. |
The shadow filter is output-preserving, so switching it off is the master baseline: one binary now times both variants on the same runner, same cloud, same tree — the only way they are comparable on shared CI vCPUs.
AlphaShapeData::shadowFilter— new flag, no public signature change.NDEBUGis off or under emscripten (MSVC iterator-debug, brew-llvm Debug and wasm share the 10-minuteUnit Testscap).[alpha-bench] <cloud> … filter=on|off reps= min= med= max= tris= hash= <counters>, plus aspeedup=/inBallTestsRatio=line.DISABLED_prefix so everyMRTestjob of the next run reports numbers; it is restored before this branch reaches master.First numbers — the agent's own self-hosted build box (8 vCPU, EPYC 7R13), not a GitHub-hosted runner (public repos get 4-core, macos-14 3-core); GCC 12.3 Release, 40k points, min of 5:
The filter removes the work it is meant to remove — 1.4–2.6× fewer ball tests, ~3× fewer considered triangles — but every shadow test is exact right now (54.5M of them on the random cloud), and that currently costs more than it saves except on the grid. That is the case for restoring the floating-point pre-filters, which the next increments measure the same way.
Verification
build-test-ubuntu-x64.yml: prebuilt thirdparty linked aslib/include/share,clone_submodules_linux.sh --skip-prebuilt-thirdparty, Ninja Release,g++-12,-DMR_CXX_STANDARD=20.MRTesttarget and its whole dependency graph built clean.MRTest --no-python-tests --gtest_filter=*AlphaShape*→ 4/4 pass, including the newAlphaShapeBench(19.8 s at 40k points; the table above is its output).AlphaShape,AlphaShapeSquareandAlphaShapeCrossingGridsare unchanged and still pass, so the flag defaulting totruekeeps the current behaviour.--no-python-testsonly because the mrbind modules are not built in this checkout.NDEBUG/ emscripten cloud sizes, and the other 18MRTestconfigs — that is what the next run on this branch is for. Those run on 3–4 vCPU, so their absolute ms will be higher than the table above; the filter-on/off ratio and the exact counters are the comparable part.CI labels: none — this PR is based on
alpha-shape-triangle-shadow, so it gets no checks of its own by design; the numbers come from the branch run after it lands there.