diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-05-28 11:06:23 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-05-28 16:41:26 +0200 |
commit | 7ac940d278f9bb3fbb1988a74dfa4909960bd998 (patch) | |
tree | 68228a3de97842d00d67217b1e7736a6db94f355 /sax/Makefile | |
parent | 7376a47680b65cbdfd747a736f288e06f51f7f2d (diff) |
tdf#125372 writer, file with lots of hints very slow to open, part3
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/73090
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sax/Makefile')
0 files changed, 0 insertions, 0 deletions