diff --git a/src/c27_benchmark/concat_string_test.go b/src/c27_benchmark/concat_string_test.go new file mode 100644 index 0000000..c54d2c0 --- /dev/null +++ b/src/c27_benchmark/concat_string_test.go @@ -0,0 +1,49 @@ +package benchmark + +import ( + "bytes" + "github.com/go-playground/assert/v2" + "testing" +) + +func TestConcatStringByAdd(t *testing.T) { + elems := []string{"1", "2", "3", "4", "5"} + ret := "" + for _, elem := range elems { + ret += elem + } + assert.Equal(t, "12345", ret) +} + +func TestConcatStringByBytesBuffer(t *testing.T) { + var buf bytes.Buffer + elems := []string{"1", "2", "3", "4", "5"} + for _, elem := range elems { + buf.WriteString(elem) + } + assert.Equal(t, "12345", buf.String()) +} + +func BenchmarkConcatStringByAdd(b *testing.B) { + b.ResetTimer() + elems := []string{"1", "2", "3", "4", "5"} + ret := "" + for i := 0; i < b.N; i++ { + for _, elem := range elems { + ret += elem + } + } + b.StopTimer() +} + +func BenchmarkConcatStringByBytesBuffer(b *testing.B) { + b.ResetTimer() + elems := []string{"1", "2", "3", "4", "5"} + var buf bytes.Buffer + for i := 0; i < b.N; i++ { + for _, elem := range elems { + buf.WriteString(elem) + } + } + b.StopTimer() +}