//go:build ignore package main import ( "flag" "fmt" "os" "path/filepath" ) func main() { countPtr := flag.Int("count", 2000, "Number of files to generate") flag.Parse() count := *countPtr dir := "dummy" fmt.Printf("Generating %d files in %s/...\n", count, dir) if err := os.MkdirAll(dir, 0755); err != nil { panic(err) } // Generate individual heavy files for i := 0; i < count; i++ { filename := filepath.Join(dir, fmt.Sprintf("file_%05d.go", i)) content := fmt.Sprintf(`package dummy import "math" // Struct%[1]d is a dummy structure to consume memory during compilation type Struct%[1]d struct { FieldA int FieldB string FieldC float64 FieldD []int FieldE map[string]string } // Function%[1]d performs arbitrary calculations to consume CPU during compilation func Function%[1]d(input int) float64 { s := Struct%[1]d{ FieldA: input, FieldB: "dummy string to take up space in the binary symbol table", FieldC: float64(input) * 1.5, FieldD: []int{1, 2, 3, 4, 5}, FieldE: map[string]string{"key": "value"}, } // Some math operations res := math.Sqrt(s.FieldC) + float64(s.FieldA) for _, v := range s.FieldD { res += float64(v) } return res } `, i) if err := os.WriteFile(filename, []byte(content), 0644); err != nil { panic(err) } } // Generate entrypoint to ensure they are linked and not dead-code eliminated entrypoint := filepath.Join(dir, "entrypoint.go") entryContent := `package dummy import "fmt" // RunAll calls every generated function to prevent linker dead-code elimination func RunAll() { sum := 0.0 ` for i := 0; i < count; i++ { entryContent += fmt.Sprintf("\tsum += Function%d(%d)\n", i, i) } entryContent += ` fmt.Printf("Total calculation: %f\n", sum) } ` if err := os.WriteFile(entrypoint, []byte(entryContent), 0644); err != nil { panic(err) } fmt.Println("Done.") }