package main import ( "testing" ) func Benchmark_Big(b *testing.B) { b.Run("return by value", func(b *testing.B) { var big bigStruct for n := 0; n < b.N; n++ { big = returnVal() } big.Var1[0] = 0 }) b.Run("return by named value", func(b *testing.B) { var big bigStruct for n := 0; n < b.N; n++ { big = returnWithName() } big.Var1[0] = 0 }) b.Run("return named pointer", func(b *testing.B) { var big *bigStruct for n := 0; n < b.N; n++ { big = returnNamedPointer() } big.Var1[0] = 0 }) b.Run("return pointer", func(b *testing.B) { var big *bigStruct for n := 0; n < b.N; n++ { big = returnPointer() } big.Var1[0] = 0 }) } func Benchmark_Small(b *testing.B) { b.Run("return pointer", func(b *testing.B) { var small *smallStruct for n := 0; n < b.N; n++ { small = returnPointerSmall() } small.ar[0] = 0 }) b.Run("return named pointer", func(b *testing.B) { var small *smallStruct for n := 0; n < b.N; n++ { small = returnNamedPointerSmall() } small.ar[0] = 0 }) b.Run("return by value", func(b *testing.B) { var small smallStruct for n := 0; n < b.N; n++ { small = returnValSmall() } small.ar[0] = 0 }) b.Run("return by named value", func(b *testing.B) { var small smallStruct for n := 0; n < b.N; n++ { small = returnWithNameSmall() } small.ar[0] = 0 }) } func Benchmark_Zendesk(b *testing.B) { b.Run("return pointer", func(b *testing.B) { var z *zendeskTicket for n := 0; n < b.N; n++ { z = returnPointerZendesk() } z.Status = "" }) b.Run("return by named pointer", func(b *testing.B) { var z *zendeskTicket for n := 0; n < b.N; n++ { z = returnNamedPointerZendesk() } z.Status = "" }) b.Run("return by value", func(b *testing.B) { var z zendeskTicket for n := 0; n < b.N; n++ { z = returnValZendesk() } z.Status = "" }) b.Run("return by named value", func(b *testing.B) { var z zendeskTicket for n := 0; n < b.N; n++ { z = returnWithNameZendesk() } z.Status = "" }) }