updated
This commit is contained in:
parent
146595ab79
commit
f4c3643e6d
|
@ -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]
|
|
@ -10,7 +10,7 @@ checkExit() {
|
||||||
if command -v go &> /dev/null
|
if command -v go &> /dev/null
|
||||||
then
|
then
|
||||||
printf "\n == Running benchmark == \n"
|
printf "\n == Running benchmark == \n"
|
||||||
go test -bench=. -benchmem ./...
|
go test -bench=. -benchtime=10x -benchmem ./...
|
||||||
checkExit
|
checkExit
|
||||||
else
|
else
|
||||||
echo "ERROR: unable to perform tests"
|
echo "ERROR: unable to perform tests"
|
||||||
|
|
|
@ -61,7 +61,7 @@ func BenchmarkSearchAllIndexes(b *testing.B) {
|
||||||
indexes = make(map[string][]string)
|
indexes = make(map[string][]string)
|
||||||
|
|
||||||
// Create mock data
|
// 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
|
// Generate 100 random search terms
|
||||||
searchTerms := generateRandomSearchTerms(100)
|
searchTerms := generateRandomSearchTerms(100)
|
||||||
|
@ -71,10 +71,9 @@ func BenchmarkSearchAllIndexes(b *testing.B) {
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
// Execute the SearchAllIndexes function
|
// Execute the SearchAllIndexes function
|
||||||
for _, term := range searchTerms {
|
for _, term := range searchTerms {
|
||||||
SearchAllIndexes(term, "/")
|
SearchAllIndexes(term, "/", "test")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printBenchmarkResults(b)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkFillIndex(b *testing.B) {
|
func BenchmarkFillIndex(b *testing.B) {
|
||||||
|
@ -82,14 +81,13 @@ func BenchmarkFillIndex(b *testing.B) {
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
for i := 0; i < b.N; i++ {
|
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) {
|
func createMockData(numDirs, numFilesPerDir int) {
|
||||||
for i := 0; i < numDirs; i++ {
|
for i := 0; i < numDirs; i++ {
|
||||||
dirName := "srv/" + getRandomTerm()
|
dirName := generateRandomPath(rand.Intn(3) + 1)
|
||||||
addToIndex("/", dirName, true)
|
addToIndex("/", dirName, true)
|
||||||
for j := 0; j < numFilesPerDir; j++ {
|
for j := 0; j < numFilesPerDir; j++ {
|
||||||
fileName := "file-" + getRandomTerm() + getRandomExtension()
|
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 {
|
func getRandomTerm() string {
|
||||||
wordbank := []string{
|
wordbank := []string{
|
||||||
"hi", "test", "other", "name",
|
"hi", "test", "other", "name",
|
||||||
|
@ -161,11 +168,3 @@ func formatMemory(bytes int64) string {
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("%d %s", bytes, sizes[i])
|
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))
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue