github.com/nibnait/go-learn@v0.0.0-20220227013611-dfa47ea6d2da/src/test/chapter/ch9/04_concat_string_test.go (about) 1 package concat_string 2 3 import ( 4 "bytes" 5 "fmt" 6 "strconv" 7 "strings" 8 "testing" 9 ) 10 11 const numbers = 100 12 13 func BenchmarkSprintf(b *testing.B) { 14 b.ResetTimer() 15 for idx := 0; idx < b.N; idx++ { 16 var s string 17 for i := 0; i < numbers; i++ { 18 s = fmt.Sprintf("%v%v", s, i) 19 } 20 } 21 b.StopTimer() 22 } 23 24 func BenchmarkStringBuilder(b *testing.B) { 25 b.ResetTimer() 26 for idx := 0; idx < b.N; idx++ { 27 var builder strings.Builder 28 for i := 0; i < numbers; i++ { 29 builder.WriteString(strconv.Itoa(i)) 30 } 31 _ = builder.String() 32 } 33 b.StopTimer() 34 } 35 36 func BenchmarkBytesBuf(b *testing.B) { 37 b.ResetTimer() 38 for idx := 0; idx < b.N; idx++ { 39 var buf bytes.Buffer 40 for i := 0; i < numbers; i++ { 41 buf.WriteString(strconv.Itoa(i)) 42 } 43 _ = buf.String() 44 } 45 b.StopTimer() 46 } 47 48 func BenchmarkStringAdd(b *testing.B) { 49 b.ResetTimer() 50 for idx := 0; idx < b.N; idx++ { 51 var s string 52 for i := 0; i < numbers; i++ { 53 s += strconv.Itoa(i) 54 } 55 56 } 57 b.StopTimer() 58 }