📊 Blade Generation Performance Results

Integration Test Benchmarks & System Configuration

⚡ Full Permutation Test Suite — 96 Configurations January 11, 2026

Comprehensive blade profile timing analysis across all configuration combinations. Test geometry: Part body 80.

1.5s
Best Average Time
960
Total Blade Operations
22,560
Blade Sheets Generated
4.8×
Speedup (Best vs Worst)

🏆 Top 10 Fastest Configurations

Rank Test # Avg Time Sheets Progress LimitView OpenGL Filter Blade Type Watertight
🥇 1 2 1.5s 12 OFF OFF OFF 0 Orthogonal ON
🥇 1 6 1.5s 11 OFF OFF OFF 1 Orthogonal ON
🥇 1 10 1.5s 12 OFF OFF OFF 2 Orthogonal ON
🥇 1 14 1.5s 12 OFF OFF ON 0 Orthogonal ON
🥇 1 18 1.5s 11 OFF OFF ON 1 Orthogonal ON
6 3 1.6s 10 OFF OFF OFF 0 Compound OFF
6 7 1.6s 10 OFF OFF OFF 1 Compound OFF
6 15 1.6s 10 OFF OFF ON 0 Compound OFF
9 19 1.7s 10 OFF OFF ON 1 Compound OFF
10 38 1.8s 12 OFF ON ON 0 Orthogonal ON

🐢 Slowest Configurations (Avoid)

Rank Test # Avg Time Sheets Progress LimitView OpenGL Filter Blade Type Watertight
96 57 7.2s 71 ON OFF OFF 2 Orthogonal OFF
95 69 6.6s 71 ON OFF ON 2 Orthogonal OFF
94 81 6.6s 71 ON ON OFF 2 Orthogonal OFF

📊 Performance Impact by Setting

Setting Impact Notes
Watertight Mode (Mode A) 3–4× faster 1.5s vs 4–7s — single biggest performance gain. Produces fewer sheets (12 vs 71) but much faster processing.
Compound Blade ~3× faster When not using watertight, compound blades (1.6s) vastly outperform orthogonal (4–5s).
Progress Indicator 0.5–1s overhead Modest impact. Disable for batch processing; keep for interactive use.
LimitView ±0.3s (negligible) No significant performance impact observed.
OpenGL Draw ±0.2s (negligible) No significant performance impact observed.
MosaicFilter Filter 1 marginally faster Filter 0 and 2 produce similar times; Filter 1 occasionally 0.2–0.4s quicker.

✓ Optimal Production Configuration

i_FX_USE_WATERTIGHT = i_TRUE '*** Mode A - watertight body intersection i_FX_SHOW_PROGRESS = i_FALSE '*** Disable for batch runs i_FX_MOSAIC_FILTER = 1 '*** Optimal filter mode i_FX_LIMIT_VIEW = 0 '*** User preference i_FX_OGL_DRAW = 0 '*** User preference

Expected performance: ~1.5 seconds per blade generation

⚙️ Interactive/Debug Configuration

  • Enable Progress Indicator for visual feedback
  • Consider Compound blade without Watertight (1.6s) if you need the full sheet count (10 sheets vs 12)
  • OpenGL Draw ON for real-time visualization during development

Raw data: test_results_1768153046-2026-1-11.csv  |  Full standalone report →

⚡ Integration Test Performance January 9, 2026

Full pipeline test: JSON → Blade Profile → Blade Solid (Body 80 test case)

5 sec
Baseline (Debug 0, No Progress Sphere)
7 sec
With NucleoSphere Progress (+40%)
~0.2 sec
Per Sphere Rotation Update
100%
Test Pass Rate
Debug Level NucleoSphere Time Overhead
0 (OFF) OFF 5 sec Baseline
0 (OFF) ON 7 sec +2 sec (+40%)
2 (VERBOSE) OFF 5 sec ~0 sec
2 (VERBOSE) ON 7 sec +2 sec (+40%)

NucleoSphere Update Frequency

Overhead scales linearly with w_FX_PROGRESS_MIN_DELTA:

w_FX_PROGRESS_MIN_DELTA Updates Est. Overhead Use Case
5 ~20 ~4 sec Smooth animation
10 (default) ~10 ~2 sec Balanced
20 ~5 ~1 sec Faster processing
50 ~2 ~0.4 sec Minimal visual feedback

⚡ Key Findings

  • Debug print statements have negligible performance impact (~0 sec)
  • NucleoSphere rotation is the main overhead source (~0.2 sec per update)
  • Doubling w_FX_PROGRESS_MIN_DELTA halves the sphere overhead
  • For batch processing: set i_FX_SHOW_PROGRESS = 0

📈 Watertight vs Normal Geometry

Watertight geometry (no B-splines, clean planar/cylindrical faces) significantly improves Parasolid intersection speed:

~2x
Faster with Watertight Geometry
100%
Test Pass Rate (Both Modes)

✓ Recommendation

Use fxMakeWatertight preprocessing for complex parts with B-spline surfaces. The ~2x speedup is worth the preprocessing cost for multi-blade fixtures.

🔧 Debug Level Control System

i_FX_DEBUG_LEVEL controls verbosity across all fixture macros:

Level Name Output Use Case
0 OFF No debug messages Production
1 SUMMARY Key milestones, errors, results Monitoring
2 VERBOSE Full debug output Development

JSON Override

Debug level can be set via JSON ("debugLevel": 0) or via macro code. By default, the JSON value wins. To override the JSON setting, set both globals in your calling macro:

i_FX_DEBUG_LEVEL = 2 i_FX_DEBUG_LEVEL_OVERRIDE = 1 '*** 1 = macro value wins, 0 = JSON wins (default)
Variable Values Description
i_FX_DEBUG_LEVEL 0, 1, 2 Debug verbosity level
i_FX_DEBUG_LEVEL_OVERRIDE 0, 1 When 1, JSON cannot overwrite i_FX_DEBUG_LEVEL

Files with Debug Level Control

  • fxBladeProfileVector.ovm
  • fxBladeProfileIntersect.ovm
  • fxCreateBladeFromIntersect.ovm
  • fxNucleoSphere.ovm
  • fxReadBladeJSON.ovm
  • fxValidateMosaicKurves.ovm
  • fxProfileToKurve3D.ovm
  • fxMakeWatertight.ovm

💡 Production Settings

Recommended Configuration

'*** In fxGlobals.var or calling macro: i_FX_DEBUG_LEVEL = 0 '*** Silent operation i_FX_SHOW_PROGRESS = 1 '*** Show NucleoSphere (set 0 for batch) w_FX_PROGRESS_MIN_DELTA = 10 '*** Update every 10% (default) i_FX_SUPPRESS_GRAPHICS = 1 '*** Suppress redraws during heavy ops '*** In JSON: "debugLevel": 0 "showProgress": true

Batch Processing Configuration

i_FX_DEBUG_LEVEL = 0 i_FX_SHOW_PROGRESS = 0 '*** Disable sphere for speed i_FX_SUPPRESS_GRAPHICS = 1

Expected time: ~5 seconds per blade (vs ~7 with progress visualization)

← Back to Documentation Index