package main import ( "net/http" "net/http/httptest" "testing" ) func makeRequest(client *http.Client, url string) error { resp, err := client.Get(url) if err != nil { return err } defer resp.Body.Close() return nil } func BenchmarkNewHttpClientEachRequest(b *testing.B) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) w.Write([]byte("OK")) })) defer server.Close() for i := 0; i < b.N; i++ { client := &http.Client{} if err := makeRequest(client, server.URL); err != nil { b.Fatalf("Request failed: %v", err) } } } func BenchmarkReuseHttpClient(b *testing.B) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) w.Write([]byte("OK")) })) defer server.Close() client := &http.Client{} // Reusable HTTP client for i := 0; i < b.N; i++ { if err := makeRequest(client, server.URL); err != nil { b.Fatalf("Request failed: %v", err) } } }