summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-structr/cache.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-05-06 19:44:22 +0000
committerLibravatar GitHub <noreply@github.com>2024-05-06 19:44:22 +0000
commit3554991444c979c8c4fabc62383d1a032ae3e5fe (patch)
tree63cbd222bff33ab603ac024ba02c1a6d8ea454c7 /vendor/codeberg.org/gruf/go-structr/cache.go
parentfeature: filters v2 server-side warning/hiding (#2793) (diff)
downloadgotosocial-3554991444c979c8c4fabc62383d1a032ae3e5fe.tar.xz
update go-structr -> v0.8.2 which includes some minor memory usage improvements (#2904)
Diffstat (limited to 'vendor/codeberg.org/gruf/go-structr/cache.go')
-rw-r--r--vendor/codeberg.org/gruf/go-structr/cache.go14
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.