• Noel Grandin's avatar
    tdf#125372 writer, file with lots of hints very slow to open, part3 · 7ac940d2
    Noel Grandin yazdı
    There were O(n^2) issues all over the places where we walk these lists.
    
    This takes the opening time from 10m+ to 4m.
    
    (*) Invalidate the sorting on a much less aggressive basis, by having
    the SwTextAttr objects tell the SwpHints object when start and end pos
    changes
    (*) Add a bool field to indicate when the maps become unsorted, so we
    can resort them only when we actually need sorted access
    (*) Add an API for walking the list of SwTextAttr* without triggering
    sorting, which is particularly important when the RedlineManager starts
    moving things around.
    (*) Add various asserts to catch code that tries to iterate over these
    sorted lists but triggers resorting during the loop.
    
    I also moved some of the logic around so that instead of
        update hint
        delete hint
        insert hint
    it now goes
        delete hint
        update hint
        insert hint
    which means that the needToSort flag does not get set because the
    hint is disconnected while it is being updated.
    
    Change-Id: Ie153ddafc9ef9e3470d588db2be2457c676232a8
    Reviewed-on: https://gerrit.libreoffice.org/73090Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
    Tested-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
    7ac940d2
reffld.cxx 53.9 KB