This commit is contained in:
Graham Steffaniak 2023-08-18 17:10:57 -05:00
parent 146595ab79
commit f4c3643e6d
3 changed files with 54 additions and 15 deletions

View File

@ -0,0 +1,40 @@
== Running benchmark ==
? github.com/gtsteffaniak/filebrowser [no test files]
? github.com/gtsteffaniak/filebrowser/auth [no test files]
? github.com/gtsteffaniak/filebrowser/cmd [no test files]
PASS
ok github.com/gtsteffaniak/filebrowser/diskcache 0.588s
? github.com/gtsteffaniak/filebrowser/errors [no test files]
? github.com/gtsteffaniak/filebrowser/files [no test files]
PASS
ok github.com/gtsteffaniak/filebrowser/fileutils 0.212s
2023/08/18 17:10:41 h: 401 <nil>
2023/08/18 17:10:41 h: 401 <nil>
2023/08/18 17:10:41 h: 401 <nil>
2023/08/18 17:10:41 h: 401 <nil>
2023/08/18 17:10:41 h: 401 <nil>
2023/08/18 17:10:41 h: 401 <nil>
PASS
ok github.com/gtsteffaniak/filebrowser/http 0.753s
PASS
ok github.com/gtsteffaniak/filebrowser/img 0.362s
PASS
ok github.com/gtsteffaniak/filebrowser/rules 0.182s
PASS
ok github.com/gtsteffaniak/filebrowser/runner 0.198s
goos: darwin
goarch: arm64
pkg: github.com/gtsteffaniak/filebrowser/search
BenchmarkSearchAllIndexes-10 10 5802738 ns/op 2756774 B/op 42606 allocs/op
BenchmarkFillIndex-10 10 4769329 ns/op 18512 B/op 453 allocs/op
PASS
ok github.com/gtsteffaniak/filebrowser/search 0.356s
? github.com/gtsteffaniak/filebrowser/settings [no test files]
? github.com/gtsteffaniak/filebrowser/share [no test files]
? github.com/gtsteffaniak/filebrowser/storage [no test files]
? github.com/gtsteffaniak/filebrowser/storage/bolt [no test files]
? github.com/gtsteffaniak/filebrowser/storage/bolt/importer [no test files]
PASS
ok github.com/gtsteffaniak/filebrowser/users 0.201s
? github.com/gtsteffaniak/filebrowser/version [no test files]

View File

@ -10,7 +10,7 @@ checkExit() {
if command -v go &> /dev/null
then
printf "\n == Running benchmark == \n"
go test -bench=. -benchmem ./...
go test -bench=. -benchtime=10x -benchmem ./...
checkExit
else
echo "ERROR: unable to perform tests"

View File

@ -61,7 +61,7 @@ func BenchmarkSearchAllIndexes(b *testing.B) {
indexes = make(map[string][]string)
// Create mock data
createMockData(500, 3) // 1000 dirs, 3 files per dir
createMockData(50, 3) // 1000 dirs, 3 files per dir
// Generate 100 random search terms
searchTerms := generateRandomSearchTerms(100)
@ -71,10 +71,9 @@ func BenchmarkSearchAllIndexes(b *testing.B) {
for i := 0; i < b.N; i++ {
// Execute the SearchAllIndexes function
for _, term := range searchTerms {
SearchAllIndexes(term, "/")
SearchAllIndexes(term, "/", "test")
}
}
printBenchmarkResults(b)
}
func BenchmarkFillIndex(b *testing.B) {
@ -82,14 +81,13 @@ func BenchmarkFillIndex(b *testing.B) {
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
createMockData(10000, 10) // 1000 dirs, 3 files per dir
createMockData(50, 3) // 1000 dirs, 3 files per dir
}
printBenchmarkResults(b)
}
func createMockData(numDirs, numFilesPerDir int) {
for i := 0; i < numDirs; i++ {
dirName := "srv/" + getRandomTerm()
dirName := generateRandomPath(rand.Intn(3) + 1)
addToIndex("/", dirName, true)
for j := 0; j < numFilesPerDir; j++ {
fileName := "file-" + getRandomTerm() + getRandomExtension()
@ -98,6 +96,15 @@ func createMockData(numDirs, numFilesPerDir int) {
}
}
func generateRandomPath(levels int) string {
rand.Seed(time.Now().UnixNano())
dirName := "srv"
for i := 0; i < levels; i++ {
dirName += "/" + getRandomTerm()
}
return dirName
}
func getRandomTerm() string {
wordbank := []string{
"hi", "test", "other", "name",
@ -161,11 +168,3 @@ func formatMemory(bytes int64) string {
}
return fmt.Sprintf("%d %s", bytes, sizes[i])
}
// Output the benchmark results with human-readable units
func printBenchmarkResults(b *testing.B) {
averageTimePerIteration := b.Elapsed() / time.Duration(b.N)
fmt.Printf("\nIterations : %d\n", b.N)
fmt.Printf("Total time : %s\n", formatDuration(b.Elapsed()))
fmt.Printf("Avg time per op : %s\n", formatDuration(averageTimePerIteration))
}