3be3fb9baf
Normally, the answer to repeated erase(begin()) is to walk backwards through the array. However, sometimes (like here), doing so will mean that we end up inserting at the front of a different array, which means we don't gain anything. So, store an extra field in the mdds block, which implements a kind of very simple approximation of a circular array. This gives me a 50% speedup for this bug. This is the simplest possible thing that could work. It could probably be made a lot more sophisticated in terms of not wasting space. Change-Id: I036349786896f28b617dfd0924f5743db6a57695 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135896 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> |
||
---|---|---|
.. | ||
Makefile | ||
Module_mdds.mk | ||
README | ||
speedup-erase-begin.patch | ||
UnpackedTarball_mdds.mk | ||
use-after-free.patch |
Multi-dimensional data structure (mdds) library, available from [https://gitlab.com/mdds/mdds]. mdds primarily provides data structures that are used by the calc core.