summaryrefslogtreecommitdiff
path: root/external
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2021-09-06 12:46:51 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2021-09-09 09:06:45 +0200
commit3749d9af3745c0eaff7239e379578e4e2af89e9d (patch)
treeb769195ba13d277ce1d9d6f2a97ecfe95a6f13b9 /external
parent4bf266233daa7d9ed030a20fa4f487f9f5a82379 (diff)
tdf#130795 use concurrent hashmap in SharedStringPool
we are loading a spreadsheet in parallel here, but the parallel threads achievei very little actual concurrency because of heavy contention in the SharedStringPool mutex. So switch to a concurrent hash map. I looked at a couple of different ones (including the Folly one), and this was the one with the simplest resulting code. This takes my load time from 12.5s to 8s Change-Id: I04d6d8e11d613b510eb3bc981f3338819b7ac813 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121717 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'external')
-rw-r--r--external/Module_external.mk1
-rw-r--r--external/cuckoo/Makefile7
-rw-r--r--external/cuckoo/Module_cuckoo.mk16
-rw-r--r--external/cuckoo/README3
-rw-r--r--external/cuckoo/UnpackedTarball_cuckoo.mk18
5 files changed, 45 insertions, 0 deletions
diff --git a/external/Module_external.mk b/external/Module_external.mk
index 4566d825301c..3de6f9cdd63f 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -104,6 +104,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
$(call gb_Helper_optional,XSLTML,xsltml) \
$(call gb_Helper_optional,ZLIB,zlib) \
$(call gb_Helper_optional,ZMF,libzmf) \
+ $(call gb_Helper_optional,CUCKOO,cuckoo) \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/cuckoo/Makefile b/external/cuckoo/Makefile
new file mode 100644
index 000000000000..e4968cf85fb6
--- /dev/null
+++ b/external/cuckoo/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/cuckoo/Module_cuckoo.mk b/external/cuckoo/Module_cuckoo.mk
new file mode 100644
index 000000000000..d2fda7b1e286
--- /dev/null
+++ b/external/cuckoo/Module_cuckoo.mk
@@ -0,0 +1,16 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Module_Module,cuckoo))
+
+$(eval $(call gb_Module_add_targets,cuckoo,\
+ UnpackedTarball_cuckoo \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/cuckoo/README b/external/cuckoo/README
new file mode 100644
index 000000000000..6b8c98342173
--- /dev/null
+++ b/external/cuckoo/README
@@ -0,0 +1,3 @@
+A high-performance, concurrent hash table
+
+[https://github.com/efficient/libcuckoo] \ No newline at end of file
diff --git a/external/cuckoo/UnpackedTarball_cuckoo.mk b/external/cuckoo/UnpackedTarball_cuckoo.mk
new file mode 100644
index 000000000000..1cfbcc6b882c
--- /dev/null
+++ b/external/cuckoo/UnpackedTarball_cuckoo.mk
@@ -0,0 +1,18 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,cuckoo))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,cuckoo,$(CUCKOO_TARBALL)))
+
+$(eval $(call gb_UnpackedTarball_set_patchlevel,cuckoo,0))
+
+$(eval $(call gb_UnpackedTarball_update_autoconf_configs,cuckoo))
+
+# vim: set noet sw=4 ts=4: