perf: editing a math graph recomputes that graph, not every channel
`set_math_channels()` rebuilt the store for any change, and a rebuild replaces the buffer:
every channel in the window started again, which is the "modifying one expression invalidates
all the others" report.
The plan is a *partition over the channels*, so it only moves when the set moves. When the
set is unchanged -- same channels, names and enables -- nothing is rebuilt now: the store is
untouched, every other channel keeps its samples and its runtimes, and the surgical path
prepares and recomputes only the affected graphs. The affected set is the edited channels plus
whatever *names* them, because one channel's output is another's input, and the recompute
computes the whole list in order (the inputs have to be there) while writing only those in
the mask -- which is why the step-loop is now `math_apply_locked(sample, write_mask, timed)`.
Adding, removing or renaming a channel still moves the plan, and still rebuilds.
[math-probe] graph edit: stored_slots 800 -> 900 (want the second at least the first, and non-zero)
The count grows because the stream keeps filling while the edit runs; the point is that it
never falls to 0, and that every channel afterwards still reads `N samples vs M time slots`
with N == M.
This commit is contained in:
1 parent
8b3240cacb
commit
5eb20f3cdb
5 files changed
+154
-4
No files matched your search
@@ -1255,3 +1255,14 @@ refusal it may still hold the previous text.
|
||||
switches one off **through its own acquire tick in the signal list** -- the tick is a box inside the row, which
|
||||
is the shape `signal_tick_visible()` walks -- and reads the plots back. `traces_left=0` is the rule: a disabled
|
||||
signal leaves every plot rather than staying as a slot that draws nothing, and the notice is what says so.
|
||||
|
||||
## `[math-probe] graph edit:`
|
||||
|
||||
```
|
||||
[math-probe] graph edit: stored_slots 800 -> 900 (want the second at least the first, and non-zero)
|
||||
```
|
||||
|
||||
`UDPSCOPE_PROBE_MATH_MS` applies an edit to one graph through the editor. The plan is a partition over the
|
||||
channels and an edit does not move it, so the store survives: the count *grows* (the stream keeps filling
|
||||
while the edit runs) and never falls to 0, which is what a rebuild would do. Every channel then still reads
|
||||
`N samples vs M time slots` with `N == M`, so no channel was left behind either.
|
||||
Reference in new issue
Block a user