mirror of
https://github.com/photoprism/photoprism.git
synced 2025-12-12 00:34:13 +01:00
refactor: use b.Loop() to simplify the code and improve performance
Signed-off-by: promalert <promalert@outlook.com>
This commit is contained in:
@@ -26,13 +26,13 @@ func TestASCII(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkASCII(b *testing.B) {
|
func BenchmarkASCII(b *testing.B) {
|
||||||
for n := 0; n < b.N; n++ {
|
for b.Loop() {
|
||||||
ASCII("https://docs.photoprism.app/getting-started 👍/config-options/#file-converters")
|
ASCII("https://docs.photoprism.app/getting-started 👍/config-options/#file-converters")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkASCIIEmpty(b *testing.B) {
|
func BenchmarkASCIIEmpty(b *testing.B) {
|
||||||
for n := 0; n < b.N; n++ {
|
for b.Loop() {
|
||||||
ASCII("")
|
ASCII("")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,13 +27,13 @@ func TestHeader(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkHeader(b *testing.B) {
|
func BenchmarkHeader(b *testing.B) {
|
||||||
for n := 0; n < b.N; n++ {
|
for b.Loop() {
|
||||||
Header("https://..docs.photoprism.app/gettin\\g-started/config-options/\tfile-converters")
|
Header("https://..docs.photoprism.app/gettin\\g-started/config-options/\tfile-converters")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkHeaderEmpty(b *testing.B) {
|
func BenchmarkHeaderEmpty(b *testing.B) {
|
||||||
for n := 0; n < b.N; n++ {
|
for b.Loop() {
|
||||||
Header("")
|
Header("")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ func TestSearchQuery(t *testing.T) {
|
|||||||
func BenchmarkSearchQuery_Complex(b *testing.B) {
|
func BenchmarkSearchQuery_Complex(b *testing.B) {
|
||||||
s := "Jens AND Mander and me Or Kitty WITH flowers IN the park AT noon | img% json OR BILL!\n"
|
s := "Jens AND Mander and me Or Kitty WITH flowers IN the park AT noon | img% json OR BILL!\n"
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
_ = SearchQuery(s)
|
_ = SearchQuery(s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,7 @@ func BenchmarkSearchQuery_Complex(b *testing.B) {
|
|||||||
func BenchmarkSearchQuery_Short(b *testing.B) {
|
func BenchmarkSearchQuery_Short(b *testing.B) {
|
||||||
s := "cat and dog"
|
s := "cat and dog"
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
_ = SearchQuery(s)
|
_ = SearchQuery(s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -65,7 +65,7 @@ func BenchmarkSearchQuery_LongNoOps(b *testing.B) {
|
|||||||
// No tokens to replace, primarily tests normalization + trim.
|
// No tokens to replace, primarily tests normalization + trim.
|
||||||
s := strings.Repeat("alpha beta gamma ", 50)
|
s := strings.Repeat("alpha beta gamma ", 50)
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
_ = SearchQuery(s)
|
_ = SearchQuery(s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,13 +26,13 @@ func TestUri(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkUri(b *testing.B) {
|
func BenchmarkUri(b *testing.B) {
|
||||||
for n := 0; n < b.N; n++ {
|
for b.Loop() {
|
||||||
Uri("https://docs.photoprism.app/getting-started/config-options/#file-converters")
|
Uri("https://docs.photoprism.app/getting-started/config-options/#file-converters")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkUriEmpty(b *testing.B) {
|
func BenchmarkUriEmpty(b *testing.B) {
|
||||||
for n := 0; n < b.N; n++ {
|
for b.Loop() {
|
||||||
Uri("")
|
Uri("")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ var benchDir = flag.String("benchdir", runtime.GOROOT(), "The directory to scan
|
|||||||
|
|
||||||
func BenchmarkFastWalk(b *testing.B) {
|
func BenchmarkFastWalk(b *testing.B) {
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
err := fastwalk.Walk(*benchDir, func(path string, typ os.FileMode) error { return nil })
|
err := fastwalk.Walk(*benchDir, func(path string, typ os.FileMode) error { return nil })
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Fatal(err)
|
b.Fatal(err)
|
||||||
|
|||||||
@@ -27,13 +27,13 @@ func TestCacheControlMaxAge(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkTestCacheControlMaxAge(b *testing.B) {
|
func BenchmarkTestCacheControlMaxAge(b *testing.B) {
|
||||||
for n := 0; n < b.N; n++ {
|
for b.Loop() {
|
||||||
_ = CacheControlMaxAge(DurationYear, false)
|
_ = CacheControlMaxAge(DurationYear, false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkTestCacheControlMaxAgeImmutable(b *testing.B) {
|
func BenchmarkTestCacheControlMaxAgeImmutable(b *testing.B) {
|
||||||
for n := 0; n < b.N; n++ {
|
for b.Loop() {
|
||||||
_ = CacheControlMaxAge(DurationYear, false) + ", " + CacheControlImmutable
|
_ = CacheControlMaxAge(DurationYear, false) + ", " + CacheControlImmutable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ func BenchmarkContainsAny_LargeOverlap(b *testing.B) {
|
|||||||
bList[i] = a[i*4]
|
bList[i] = a[i*4]
|
||||||
}
|
}
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
if !ContainsAny(a, bList) {
|
if !ContainsAny(a, bList) {
|
||||||
b.Fatalf("expected overlap")
|
b.Fatalf("expected overlap")
|
||||||
}
|
}
|
||||||
@@ -44,7 +44,7 @@ func BenchmarkContainsAny_Disjoint(b *testing.B) {
|
|||||||
a := makeStrings("a", 5000)
|
a := makeStrings("a", 5000)
|
||||||
bList := makeStrings("b", 5000)
|
bList := makeStrings("b", 5000)
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
if ContainsAny(a, bList) {
|
if ContainsAny(a, bList) {
|
||||||
b.Fatalf("expected disjoint")
|
b.Fatalf("expected disjoint")
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,7 @@ func BenchmarkJoin_Large(b *testing.B) {
|
|||||||
j := append(makeStrings("y", 5000), a[:1000]...) // 1000 duplicates
|
j := append(makeStrings("y", 5000), a[:1000]...) // 1000 duplicates
|
||||||
j = shuffleEveryK(j, 7)
|
j = shuffleEveryK(j, 7)
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
out := Join(a, j)
|
out := Join(a, j)
|
||||||
if len(out) != 10000 {
|
if len(out) != 10000 {
|
||||||
b.Fatalf("unexpected length: %d", len(out))
|
b.Fatalf("unexpected length: %d", len(out))
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ func TestIsJoinToken(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkJoinToken(b *testing.B) {
|
func BenchmarkJoinToken(b *testing.B) {
|
||||||
for n := 0; n < b.N; n++ {
|
for b.Loop() {
|
||||||
JoinToken()
|
JoinToken()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ func TestClip(t *testing.T) {
|
|||||||
func BenchmarkClipRunesASCII(b *testing.B) {
|
func BenchmarkClipRunesASCII(b *testing.B) {
|
||||||
s := strings.Repeat("abc def ghi ", 20) // ASCII
|
s := strings.Repeat("abc def ghi ", 20) // ASCII
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
_ = Clip(s, 50)
|
_ = Clip(s, 50)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ func BenchmarkClipRunesASCII(b *testing.B) {
|
|||||||
func BenchmarkClipRunesUTF8(b *testing.B) {
|
func BenchmarkClipRunesUTF8(b *testing.B) {
|
||||||
s := strings.Repeat("Grüße 世", 20) // non-ASCII runes
|
s := strings.Repeat("Grüße 世", 20) // non-ASCII runes
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
_ = Clip(s, 50)
|
_ = Clip(s, 50)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ func TestContainsAlnumLower(t *testing.T) {
|
|||||||
func BenchmarkContainsNumber(b *testing.B) {
|
func BenchmarkContainsNumber(b *testing.B) {
|
||||||
s := "The quick brown fox jumps over 13 lazy dogs"
|
s := "The quick brown fox jumps over 13 lazy dogs"
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
_ = ContainsNumber(s)
|
_ = ContainsNumber(s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -123,7 +123,7 @@ func BenchmarkContainsNumber(b *testing.B) {
|
|||||||
func BenchmarkSortCaseInsensitive(b *testing.B) {
|
func BenchmarkSortCaseInsensitive(b *testing.B) {
|
||||||
words := []string{"Zebra", "apple", "Banana", "cherry", "Apricot", "banana", "zebra", "Cherry"}
|
words := []string{"Zebra", "apple", "Banana", "cherry", "Apricot", "banana", "zebra", "Cherry"}
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
w := append([]string(nil), words...)
|
w := append([]string(nil), words...)
|
||||||
SortCaseInsensitive(w)
|
SortCaseInsensitive(w)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ func makeLargeText(distinct, repeats int) string {
|
|||||||
func BenchmarkWords_Large(b *testing.B) {
|
func BenchmarkWords_Large(b *testing.B) {
|
||||||
s := makeLargeText(200, 200) // ~40k tokens mixed
|
s := makeLargeText(200, 200) // ~40k tokens mixed
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
_ = Words(s)
|
_ = Words(s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,7 @@ func BenchmarkWords_Large(b *testing.B) {
|
|||||||
func BenchmarkUniqueKeywords_Large(b *testing.B) {
|
func BenchmarkUniqueKeywords_Large(b *testing.B) {
|
||||||
s := makeLargeText(200, 200)
|
s := makeLargeText(200, 200)
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
_ = UniqueKeywords(s)
|
_ = UniqueKeywords(s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -62,7 +62,7 @@ func BenchmarkUniqueKeywords_Large(b *testing.B) {
|
|||||||
func BenchmarkUniqueKeywords_ManyDup(b *testing.B) {
|
func BenchmarkUniqueKeywords_ManyDup(b *testing.B) {
|
||||||
s := makeLargeText(20, 2000) // many repeats, few distinct
|
s := makeLargeText(20, 2000) // many repeats, few distinct
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
for b.Loop() {
|
||||||
_ = UniqueKeywords(s)
|
_ = UniqueKeywords(s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user