From f4c3643e6d6314963fd90e804825191a477c515e Mon Sep 17 00:00:00 2001 From: Graham Steffaniak Date: Fri, 18 Aug 2023 17:10:57 -0500 Subject: [PATCH] updated --- backend/benchmark_results.txt | 40 +++++++++++++++++++++++++++++++++++ backend/run_benchmark.sh | 2 +- backend/search/search_test.go | 27 ++++++++++++----------- 3 files changed, 54 insertions(+), 15 deletions(-) create mode 100644 backend/benchmark_results.txt diff --git a/backend/benchmark_results.txt b/backend/benchmark_results.txt new file mode 100644 index 00000000..973bc2e5 --- /dev/null +++ b/backend/benchmark_results.txt @@ -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 +2023/08/18 17:10:41 h: 401 +2023/08/18 17:10:41 h: 401 +2023/08/18 17:10:41 h: 401 +2023/08/18 17:10:41 h: 401 +2023/08/18 17:10:41 h: 401 +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] diff --git a/backend/run_benchmark.sh b/backend/run_benchmark.sh index 00d8aac8..5e8e34cd 100755 --- a/backend/run_benchmark.sh +++ b/backend/run_benchmark.sh @@ -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" diff --git a/backend/search/search_test.go b/backend/search/search_test.go index 2db409a4..7e8a44da 100644 --- a/backend/search/search_test.go +++ b/backend/search/search_test.go @@ -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)) -}