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  }