github.com/xyproto/orbiton/v2@v2.65.12-0.20240516144430-e10a419274ec/readfile_test.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "math/rand" 6 "os" 7 "testing" 8 ) 9 10 // createDummyFiles generates dummy files with specified size and returns their paths. 11 func createDummyFiles(numFiles int, fileSize int) ([]string, error) { 12 var paths []string 13 charset := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 14 15 for i := 0; i < numFiles; i++ { 16 content := make([]byte, fileSize) 17 for j := range content { 18 content[j] = charset[rand.Intn(len(charset))] 19 } 20 21 tmpfile, err := os.CreateTemp("", "dummyfile") 22 if err != nil { 23 return nil, err 24 } 25 _, err = tmpfile.Write(content) 26 if err != nil { 27 return nil, err 28 } 29 tmpfile.Close() 30 31 paths = append(paths, tmpfile.Name()) 32 } 33 34 return paths, nil 35 } 36 37 func BenchmarkReadFileAndProcessLines(b *testing.B) { 38 numFiles := 5 39 fileSizes := []int{32, 64, 128, 256, 512, 1024, 2 * 1024, 3 * 1024, 7 * 512, 4 * 1024, 5 * 1024, 6 * 1024, 7 * 1024, 8 * 1024, 10 * 1024, 12 * 1024, 16 * 1024, 32 * 1024, 64 * 1024} 40 41 for _, fileSize := range fileSizes { 42 filePaths, err := createDummyFiles(numFiles, fileSize) 43 if err != nil { 44 b.Fatal(err) 45 } 46 47 b.Run(fmt.Sprintf("FileSize%dKB", fileSize/1024), func(b *testing.B) { 48 e := NewSimpleEditor(80) // Assuming your Editor constructor is named NewSimpleEditor 49 for i := 0; i < b.N; i++ { 50 for _, filePath := range filePaths { 51 _ = e.ReadFileAndProcessLines(filePath) 52 } 53 } 54 }) 55 56 // Clean up dummy files 57 for _, filePath := range filePaths { 58 os.Remove(filePath) 59 } 60 } 61 }