[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
This commit is contained in:
kim 2024-11-11 15:45:19 +00:00 committed by GitHub
commit e3c2b790fd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
29 changed files with 189 additions and 76 deletions

View file

@ -35,7 +35,7 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/log"
"github.com/superseriousbusiness/gotosocial/internal/uris"
"github.com/superseriousbusiness/gotosocial/internal/util"
"github.com/superseriousbusiness/gotosocial/internal/util/xslices"
)
type errOtherIRIBlocked struct {
@ -162,7 +162,7 @@ func (f *Federator) PostInboxRequestBodyHook(ctx context.Context, r *http.Reques
// OtherIRIs will likely contain some
// duplicate entries now, so remove them.
otherIRIs = util.DeduplicateFunc(otherIRIs,
otherIRIs = xslices.DeduplicateFunc(otherIRIs,
(*url.URL).String, // serialized URL is 'key()'
)