reduced different Block construction variants in Block, Graph, BlockWrapper, and BlockRegistry
simplified some lambda-heavy templating (using clang's -ftime-trace)
follow-up of minor fixes
temporarily reverted to using BasicSetting implementation
added NOPLUGINS flag to by-pass the plugin system in favour of faster compile-times and when runtime or Python wrapping APIs are not requrired e.g. for compile-time only flow-graphs or for CI runners
Added New CMake Options:
- NOPLUGINS: Disables plugins to reduce compile-times and by-pass runtime- and Python-wrapper API.
- EMBEDDED: Enables embedded mode for size optimization, automatically enabled for MinSizeRel build type.
- TIMETRACE: Enables Clang's -ftime-trace for time-trace information during compilation.
- ADDRESS_SANITIZER: Enables address sanitizer for memory error detection.
- UB_SANITIZER: Enables undefined behavior sanitizer for detecting undefined behavior.
- THREAD_SANITIZER: Enables thread sanitizer for detecting data races.
Compile-times before->after (full project as well as qa_Scheduler as particularly compile-time heavy unit-test):
Compile-Time Performance Optimisations and Simplifications
This is a follow-up of PR345.
-ftime-trace
)BasicSetting
implementationNOPLUGINS
flag to by-pass the plugin system in favour of faster compile-times and when runtime or Python wrapping APIs are not requrired e.g. for compile-time only flow-graphs or for CI runnersNOPLUGINS
: Disables plugins to reduce compile-times and by-pass runtime- and Python-wrapper API. -EMBEDDED
: Enables embedded mode for size optimization, automatically enabled forMinSizeRel
build type. -TIMETRACE
: Enables Clang's-ftime-trace
for time-trace information during compilation. -ADDRESS_SANITIZER
: Enables address sanitizer for memory error detection. -UB_SANITIZER
: Enables undefined behavior sanitizer for detecting undefined behavior. -THREAD_SANITIZER
: Enables thread sanitizer for detecting data races.Compile-times before->after (full project as well as qa_Scheduler as particularly compile-time heavy unit-test):
before (w/ default options):
qa_Scheduler.cpp.before.json.zip qa_scheduler_analysis_before.txt
after (w/o options):
after (w/
-DADDRESS_SANITIZER=ON
):ctest OK (except qa_Pythonblock -> memory leak)
after (w/
-DADDRESS_SANITIZER=ON -DNOPLUGINS=ON
):ctest OK (except qa_Pythonblock -> memory leak)
qa_Scheduler.cpp.after_noplugins.json.zip
qa_scheduler_analysis_after_noplugins.txt
after (w/
-DADDRESS_SANITIZER=ON -DNOPLUGINS=ON -DTIMETRACE=ON
):ctest OK (except qa_Pythonblock -> memory leak)
after (w/
-DUB_SANITIZER=ON -DNOPLUGINS=ON
):ctest OK (except qa_Pythonblock -> memory leak)