github.com/nibnait/go-learn@v0.0.0-20220227013611-dfa47ea6d2da/src/test/chapter/ch5/37_benchmark/concat_string_test.go (about) 1 package benchmark_test 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestConcatStringByAdd(t *testing.T) { 11 elems := []string{"1", "2", "3", "4", "5"} 12 ret := "" 13 for _, elem := range elems { 14 ret += elem 15 } 16 assert.Equal(t, "12345", ret) 17 } 18 19 func TestConcatStringByBytesBuffer(t *testing.T) { 20 var buf bytes.Buffer 21 elems := []string{"1", "2", "3", "4", "5"} 22 for _, elem := range elems { 23 buf.WriteString(elem) 24 25 } 26 assert.Equal(t, "12345", buf.String()) 27 } 28 29 func BenchmarkConcatStringByAdd(b *testing.B) { 30 31 elems := []string{"1", "2", "3", "4", "5"} 32 b.ResetTimer() 33 for i := 0; i < b.N; i++ { 34 ret := "" 35 for _, elem := range elems { 36 ret += elem 37 } 38 } 39 b.StopTimer() 40 } 41 42 func BenchmarkConcatStringByBytesBuffer(b *testing.B) { 43 elems := []string{"1", "2", "3", "4", "5"} 44 b.ResetTimer() 45 for i := 0; i < b.N; i++ { 46 var buf bytes.Buffer 47 48 for _, elem := range elems { 49 buf.WriteString(elem) 50 51 } 52 } 53 b.StopTimer() 54 55 }