Optimizing calculations on lists

When I use Process List to do some real numbers crunching, I loose about half the speed compared to the events going in the Process List: for a list of 96 4D items going in at 93 events/second, it’s coming out at 46 events/second. The calculations are not that intensive, like (B-A)/(A+B) or A+B+C+D.

When the calculations can be done with Calculate List, seemingly more intensive calculations, like 1-(min(X*A,1)-1)^2, can maintain the speed.

I was wondering what could I do the speed things up, and, if nothing can be done, if Calculate List could eventually be improved to allow more than one “X values”.

I would guess it’s slower since you’re running multiple nodes/processes serially-but-also-paralell-kinda(?) inside a Process List node. In comparison the calculate list would only run through its calculations without having to consider the other nodes and synchronisation before outputting a value to the item.

If it is an issue with one of the calculations taking a longer time than the rest, you can possibly try to remove one of the calculations at a time. If it improves efficiency you can take the worst culprit and split it to see if it helps.

Addressing value.x/y/z/w inside both the calculate and the calculate list node would be great though.

I’ve tried splitting the unique Process List into three Process List, one for each calculation: still the same speed-wise.

I guess this FR https://community.vuo.org/t/-/5009, Iteration: Turn most nodes into iterators by allowing single-value ports to accept lists, would take care of what I want.