diff options
author | 2024-11-11 15:45:19 +0000 | |
---|---|---|
committer | 2024-11-11 15:45:19 +0000 | |
commit | e3c2b790fd4329494979bd27be7fa162600f1436 (patch) | |
tree | 4f33353453cf45a670149e3d9f7dedc56ad79a88 /internal/util/slices_test.go | |
parent | [chore]: Bump golang.org/x/net from 0.30.0 to 0.31.0 (#3536) (diff) | |
download | gotosocial-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/util/slices_test.go')
-rw-r--r-- | internal/util/slices_test.go | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/internal/util/slices_test.go b/internal/util/slices_test.go deleted file mode 100644 index c93e489f5..000000000 --- a/internal/util/slices_test.go +++ /dev/null @@ -1,94 +0,0 @@ -// GoToSocial -// Copyright (C) GoToSocial Authors admin@gotosocial.org -// SPDX-License-Identifier: AGPL-3.0-or-later -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -package util_test - -import ( - "net/url" - "slices" - "testing" - - "github.com/superseriousbusiness/gotosocial/internal/util" -) - -var ( - testURLSlice = []*url.URL{} -) - -func TestGather(t *testing.T) { - out := util.Gather(nil, []*url.URL{ - {Scheme: "https", Host: "google.com", Path: "/some-search"}, - {Scheme: "http", Host: "example.com", Path: "/robots.txt"}, - }, (*url.URL).String) - if !slices.Equal(out, []string{ - "https://google.com/some-search", - "http://example.com/robots.txt", - }) { - t.Fatal("unexpected gather output") - } - - out = util.Gather([]string{ - "starting input string", - "another starting input", - }, []*url.URL{ - {Scheme: "https", Host: "google.com", Path: "/some-search"}, - {Scheme: "http", Host: "example.com", Path: "/robots.txt"}, - }, (*url.URL).String) - if !slices.Equal(out, []string{ - "starting input string", - "another starting input", - "https://google.com/some-search", - "http://example.com/robots.txt", - }) { - t.Fatal("unexpected gather output") - } -} - -func TestGatherIf(t *testing.T) { - out := util.GatherIf(nil, []string{ - "hello world", - "not hello world", - "hello world", - }, func(s string) (string, bool) { - return s, s == "hello world" - }) - if !slices.Equal(out, []string{ - "hello world", - "hello world", - }) { - t.Fatal("unexpected gatherif output") - } - - out = util.GatherIf([]string{ - "starting input string", - "another starting input", - }, []string{ - "hello world", - "not hello world", - "hello world", - }, func(s string) (string, bool) { - return s, s == "hello world" - }) - if !slices.Equal(out, []string{ - "starting input string", - "another starting input", - "hello world", - "hello world", - }) { - t.Fatal("unexpected gatherif output") - } -} |