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.
