summaryrefslogtreecommitdiff
path: root/internal/processing
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-11-11 15:45:19 +0000
committerLibravatar GitHub <noreply@github.com>2024-11-11 15:45:19 +0000
commite3c2b790fd4329494979bd27be7fa162600f1436 (patch)
tree4f33353453cf45a670149e3d9f7dedc56ad79a88 /internal/processing
parent[chore]: Bump golang.org/x/net from 0.30.0 to 0.31.0 (#3536) (diff)
downloadgotosocial-e3c2b790fd4329494979bd27be7fa162600f1436.tar.xz
[performance] minimise log field allocations (#3529)
* when appending log field only do so by minimal amount * move slice utils to separate package to fix import cycle, add GrowJust() and AppendJust() functions * fix GrowJust() not returning slice of same length * improved xslices tests * make AppendJust() test check for slice contents, fix AppendJust() final copying behaviour * add a +1 with field growth to try minimise allocation for log 'msg' field
Diffstat (limited to 'internal/processing')
-rw-r--r--internal/processing/account/alias.go6
-rw-r--r--internal/processing/status/create.go7
2 files changed, 7 insertions, 6 deletions
diff --git a/internal/processing/account/alias.go b/internal/processing/account/alias.go
index a11be0305..d7d4cf547 100644
--- a/internal/processing/account/alias.go
+++ b/internal/processing/account/alias.go
@@ -27,7 +27,7 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
- "github.com/superseriousbusiness/gotosocial/internal/util"
+ "github.com/superseriousbusiness/gotosocial/internal/util/xslices"
)
func (p *Processor) Alias(
@@ -137,8 +137,8 @@ func (p *Processor) Alias(
// Dedupe URIs + accounts, in case someone
// provided both an account URL and an
// account URI above, for the same account.
- account.AlsoKnownAsURIs = util.Deduplicate(account.AlsoKnownAsURIs)
- account.AlsoKnownAs = util.DeduplicateFunc(
+ account.AlsoKnownAsURIs = xslices.Deduplicate(account.AlsoKnownAsURIs)
+ account.AlsoKnownAs = xslices.DeduplicateFunc(
account.AlsoKnownAs,
func(a *gtsmodel.Account) string {
return a.URI
diff --git a/internal/processing/status/create.go b/internal/processing/status/create.go
index 55a78610f..fbc2dadf7 100644
--- a/internal/processing/status/create.go
+++ b/internal/processing/status/create.go
@@ -36,6 +36,7 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/typeutils"
"github.com/superseriousbusiness/gotosocial/internal/uris"
"github.com/superseriousbusiness/gotosocial/internal/util"
+ "github.com/superseriousbusiness/gotosocial/internal/util/xslices"
)
// Create processes the given form to create a new status, returning the api model representation of that status if it's OK.
@@ -536,9 +537,9 @@ func (p *Processor) processContent(ctx context.Context, parseMention gtsmodel.Pa
}
// Gather all the database IDs from each of the gathered status mentions, tags, and emojis.
- status.MentionIDs = util.Gather(nil, status.Mentions, func(mention *gtsmodel.Mention) string { return mention.ID })
- status.TagIDs = util.Gather(nil, status.Tags, func(tag *gtsmodel.Tag) string { return tag.ID })
- status.EmojiIDs = util.Gather(nil, status.Emojis, func(emoji *gtsmodel.Emoji) string { return emoji.ID })
+ status.MentionIDs = xslices.Gather(nil, status.Mentions, func(mention *gtsmodel.Mention) string { return mention.ID })
+ status.TagIDs = xslices.Gather(nil, status.Tags, func(tag *gtsmodel.Tag) string { return tag.ID })
+ status.EmojiIDs = xslices.Gather(nil, status.Emojis, func(emoji *gtsmodel.Emoji) string { return emoji.ID })
if status.ContentWarning != "" && len(status.AttachmentIDs) > 0 {
// If a content-warning is set, and