labath added a comment. In D74759#1893186 <https://reviews.llvm.org/D74759#1893186>, @unnar wrote:
> In D74759#1880499 <https://reviews.llvm.org/D74759#1880499>, @labath wrote: > > > Have you done a proper complexity analysis here? I doubt the `O(log n)` > > claim is true in general. It would have to be at least `O(m + log n)` (m - > > number of elements found), but it's not clear to me whether even this is > > true in general. (However, I believe this can achieve ~~log(n) for > > non-degenerate cases.) > > > I should have been more specific, searching for any interval that contains a > point can be done in `O(log n)` but in our case where we are searching for > all intervals that contain the point and as Jarin said we believe it takes > `O(m log n)` (I admit I have not done a thorough analysis of the time > complexity myself). The theoretical best you can do is indeed `O(m + log n)`. Yep, I can easily convince myself is m*log(n). I can believe it can be O(m+log(n)) too, but proving that would require some pretty careful accounting. In either case, I am sure this is better than what we have now. >> For testing you should add some c++ unit tests for the relevant interfaces. > > Done. Do you think we should also unit test ComputeUpperBounds or just the > interface? Testing the interface should be enough. In fact, the main thing that is bothering me about this patch at this stage is that the new "upper_bound" member is public and accessible to the user. I haven't decided yet what to do about it. Have you looked at what it would take to make that private somehow? Maybe by storing std::pair<Entry, bound> in the private vector, and only handing out pointers to the `Entry` component ? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74759/new/ https://reviews.llvm.org/D74759 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits