fix: boolean benchmark 传入 to_mesh(deflection=0.5) 避免 OOM + 重新启用
CI / Build & Test (push) Failing after 16m51s
CI / Release Build (push) Failing after 24s

This commit is contained in:
茂之钳
2026-07-24 03:02:49 +00:00
parent b45822c8b0
commit 1d35046cf8
2 changed files with 8 additions and 6 deletions
+1 -1
View File
@@ -71,6 +71,6 @@ add_custom_target(vde_benchmarks
enable_testing()
add_test(NAME bench_bvh COMMAND vde_bench_bvh --benchmark_min_time=0.01s)
add_test(NAME bench_delaunay COMMAND vde_bench_delaunay --benchmark_min_time=0.01s)
# add_test(NAME bench_boolean COMMAND vde_bench_boolean --benchmark_min_time=0.01s)
add_test(NAME bench_boolean COMMAND vde_bench_boolean --benchmark_min_time=0.01s)
add_test(NAME bench_curves COMMAND vde_bench_curves --benchmark_min_time=0.01s)
add_test(NAME bench_spatial COMMAND vde_bench_spatial --benchmark_min_time=0.01s)
+7 -5
View File
@@ -28,12 +28,14 @@ struct SpherePair {
/// sphere_a at origin, sphere_b translated by +1.0 along X (overlap ~0.5)
SpherePair make_sphere_pair(int face_count) {
// make_sphere produces ~ 2 * seg_u * seg_v faces → solve for seg
int seg = std::max(static_cast<int>(std::ceil(std::sqrt(face_count / 2.0))), 4);
int seg_u = seg;
int seg_v = seg;
int seg = std::max(static_cast<int>(std::ceil(std::sqrt(face_count / 2.0))), 3);
// Use deflection to control tessellation density per face
// Each NURBS face tessellates res×res quads where res = max(4, 1/deflection)
// For benchmark we want coarse tessellation: deflection = 0.5 → res=4
double deflection = 0.5;
auto sphere_a = brep::make_sphere(1.0, seg_u, seg_v).to_mesh();
auto sphere_b = brep::make_sphere(1.0, seg_u, seg_v).to_mesh();
auto sphere_a = brep::make_sphere(1.0, seg, seg).to_mesh(deflection);
auto sphere_b = brep::make_sphere(1.0, seg, seg).to_mesh(deflection);
// Translate sphere_b by +1.0 along X so they overlap by ~0.5
// Rebuild from triangles with translated vertices