https://bugs.documentfoundation.org/show_bug.cgi?id=133557

--- Comment #10 from Kohei Yoshida <[email protected]> ---
(In reply to Noel Grandin from comment #8)

> What is odd in that particular function,
> is that for svSingleRef formula, we are doing a slow thing (hooking up
> individual listeners), 
> while for svDoubleRef, we are using the BASM machinery, which shares
> listeners.

That's how Calc has traditionally handled cell dependencies i.e. for single
cell reference, store the broadcaster in the column and for range reference, us
BASM.  This design decision even predates my involvement in this code base.

Prior to the cell storage rework in 4.2, the single cell listener was stored
directly in ScBaseCell.  After the rework it got switched to
multi_type_vector-based listener store, primarily to preserve the original
design.

Or, perhaps by asking this question if you are implying that we should perhaps
only use BASM to handle both single cell reference as well as range reference
*everywhere*, and just drop this single cell listener thing in the column for
good, then I do see your point, and I don't disagree with that.  In fact, my
experimental alternative dependency tracker implementation in ixion, I did do
exactly that, using mdds::rtree to store cell and cell range positions.

But making such change in Calc would be quite large undertaking. And whether or
not the performance would be better is (though it potentially may be) still
unknown.  That said, if I were to design a new mechanism from scratch I would
go in that direction for sure, using mdds::rtree to store broadcaster position
data.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to