diff options
Diffstat (limited to 'vendor/codeberg.org/gruf/go-structr/cache.go')
-rw-r--r-- | vendor/codeberg.org/gruf/go-structr/cache.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/vendor/codeberg.org/gruf/go-structr/cache.go b/vendor/codeberg.org/gruf/go-structr/cache.go index d9bcc58d3..17c491158 100644 --- a/vendor/codeberg.org/gruf/go-structr/cache.go +++ b/vendor/codeberg.org/gruf/go-structr/cache.go @@ -556,6 +556,12 @@ func (c *Cache[T]) Cap() int { func (c *Cache[T]) store_value(index *Index, key Key, value T) { // Alloc new index item. item := new_indexed_item() + if cap(item.indexed) < len(c.indices) { + + // Preallocate item indices slice to prevent Go auto + // allocating overlying large slices we don't need. + item.indexed = make([]*index_entry, 0, len(c.indices)) + } // Create COPY of value. value = c.copy(value) @@ -622,6 +628,14 @@ func (c *Cache[T]) store_error(index *Index, key Key, err error) { // Alloc new index item. item := new_indexed_item() + if cap(item.indexed) < len(c.indices) { + + // Preallocate item indices slice to prevent Go auto + // allocating overlying large slices we don't need. + item.indexed = make([]*index_entry, 0, len(c.indices)) + } + + // Set error val. item.data = err // Append item to index. |