This PR clean up the scan_manager
to support the low level ScansObserver
instead of DefaultScansObserver
.
This allow to:
- Reduce the processing at a critical place (previously, some information was not exposed)
- Make it more readable as there is no more dict with non-explicit content.
This MR allow clean up few things in Flint scan_manager
module.
For that a field is-scan-sequence
was introduced in the scan_info
, be able to distinguish scans and scans containing scans (0efe67c4)
Benchmark
Setup
- Tested with 64 channels of 64 values
- Only the data reception is benchmarked (before sending it to the application pipeline)
- 100 iterations / 5 repeat
Brute force computation
In the worst case scenario when every single new data have to be processed independently.
- Starting point: 9.14s
- Use
ScansObserver
: 2.1s (4.4 faster)
Gevent caching
Release gevent loop every 32 data
- Starting point: 4.54s
- Use
ScansObserver
: 4.2s (close to the same) - Push scalar channel by bunch: 3.71s
- Mitigate use of concate for very fast data pushing: 2.83s