summaryrefslogtreecommitdiff
path: root/svl/Module_svl.mk
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2014-06-16 22:27:00 +0100
committerJan Holesovsky <kendy@collabora.com>2014-06-27 16:12:07 +0000
commit8aff83b95fa5969edfc48022ddaae05031b178cf (patch)
tree429c1332d634cfb58fc6dda1f940911233f13793 /svl/Module_svl.mk
parent7aeef829fdc25a60530c776c8f4958b7415384ce (diff)
fdo#38513 - Accelerate non-poolable item add / remove.
For large documents we create and destroy a large number of non-poolable SfxPoolItems, which get inserted into and removed from a vector. Unfortunately the performance of this (depending on pattern) is O(N) and this insert/remove/extend pattern can happen per text span we insert. This patch makes this O(const) via a hash. This gives a 5x speedup for the above bug; 176s to 34s or so, and moves the remaining performance issues elsewhere. Unfortunately, we have to retain the ordered array to keep the binary file format code (used for editeng cut-and-paste) in place, so have to keep both a hash, and an array, and a list around for free slots. cf. fdo#79851 where there is a start at removing that. This wastes space; but not that much - for a large open document collection we have O(100's) of SfxItemPools, and O(1000's) of SfxPoolItemArray_Impls; having fixed fdo#79851 we can consolidate this. Add skeletal unit test; translate several German comments; remove un-necessary include. Change-Id: Ie0de32b1a29217560c5591c71a6cd4e26d39a531 Reviewed-on: https://gerrit.libreoffice.org/9818 Reviewed-by: Jan Holesovsky <kendy@collabora.com> Tested-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'svl/Module_svl.mk')
-rw-r--r--svl/Module_svl.mk1
1 files changed, 1 insertions, 0 deletions
diff --git a/svl/Module_svl.mk b/svl/Module_svl.mk
index f52c7a4bfb72..75890301e31b 100644
--- a/svl/Module_svl.mk
+++ b/svl/Module_svl.mk
@@ -34,6 +34,7 @@ $(eval $(call gb_Module_add_check_targets,svl,\
CppunitTest_svl_qa_cppunit \
CppunitTest_svl_inetcontenttype \
CppunitTest_svl_items \
+ CppunitTest_svl_itempool \
))
#TODO: CppunitTest_svl_urihelper depends on ucb, can only be added once svl is