Created
February 19, 2018 18:05
-
-
Save knsh14/6f02536c1ef1863f9ad67f33995e52a7 to your computer and use it in GitHub Desktop.
golang 1.10.0 strings.Builder benchmark
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
goos: linux | |
goarch: amd64 | |
pkg: github.com/knsh14/sample | |
BenchmarkBytesBufferString/10-2 100000 12086 ns/op 1984 B/op 13 allocs/op | |
BenchmarkBytesBufferString/50-2 100000 17160 ns/op 7744 B/op 53 allocs/op | |
BenchmarkBytesBufferString/100-2 100000 24451 ns/op 14944 B/op 103 allocs/op | |
BenchmarkBytesBufferString/200-2 50000 30369 ns/op 29344 B/op 203 allocs/op | |
BenchmarkBytesBufferString/500-2 30000 56428 ns/op 72544 B/op 503 allocs/op | |
BenchmarkStringsBuilderString/10-2 200000 9501 ns/op 256 B/op 5 allocs/op | |
BenchmarkStringsBuilderString/50-2 200000 8830 ns/op 256 B/op 5 allocs/op | |
BenchmarkStringsBuilderString/100-2 200000 9074 ns/op 256 B/op 5 allocs/op | |
BenchmarkStringsBuilderString/200-2 200000 9874 ns/op 256 B/op 5 allocs/op | |
BenchmarkStringsBuilderString/500-2 100000 10186 ns/op 256 B/op 5 allocs/op | |
---- | |
BenchmarkBytesBufferWriteString/10-2 200000 9678 ns/op 336 B/op 3 allocs/op | |
BenchmarkBytesBufferWriteString/50-2 100000 12116 ns/op 1472 B/op 5 allocs/op | |
BenchmarkBytesBufferWriteString/100-2 100000 14234 ns/op 2976 B/op 6 allocs/op | |
BenchmarkBytesBufferWriteString/200-2 100000 17745 ns/op 5984 B/op 7 allocs/op | |
BenchmarkBytesBufferWriteString/500-2 50000 47359 ns/op 13536 B/op 8 allocs/op | |
BenchmarkStringsBuilderWriteString/10-2 200000 9035 ns/op 256 B/op 5 allocs/op | |
BenchmarkStringsBuilderWriteString/50-2 100000 11519 ns/op 1024 B/op 7 allocs/op | |
BenchmarkStringsBuilderWriteString/100-2 100000 11835 ns/op 2048 B/op 8 allocs/op | |
BenchmarkStringsBuilderWriteString/200-2 100000 14784 ns/op 4096 B/op 9 allocs/op | |
BenchmarkStringsBuilderWriteString/500-2 100000 24236 ns/op 15104 B/op 12 allocs/op | |
--- | |
BenchmarkGrownBytesBufferWriteString/10-2 200000 9725 ns/op 336 B/op 3 allocs/op | |
BenchmarkGrownBytesBufferWriteString/50-2 200000 11096 ns/op 1424 B/op 4 allocs/op | |
BenchmarkGrownBytesBufferWriteString/100-2 100000 12717 ns/op 2736 B/op 4 allocs/op | |
BenchmarkGrownBytesBufferWriteString/200-2 100000 14994 ns/op 5488 B/op 4 allocs/op | |
BenchmarkGrownBytesBufferWriteString/500-2 100000 21042 ns/op 13424 B/op 4 allocs/op | |
BenchmarkGrownStringsBuilderWriteString/10-2 200000 8950 ns/op 192 B/op 2 allocs/op | |
BenchmarkGrownStringsBuilderWriteString/50-2 200000 14460 ns/op 960 B/op 2 allocs/op | |
BenchmarkGrownStringsBuilderWriteString/100-2 100000 11890 ns/op 1920 B/op 2 allocs/op | |
BenchmarkGrownStringsBuilderWriteString/200-2 100000 15090 ns/op 2816 B/op 2 allocs/op | |
BenchmarkGrownStringsBuilderWriteString/500-2 100000 21612 ns/op 7168 B/op 2 allocs/op | |
PASS | |
ok github.com/knsh14/sample/hoge 590.626s |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"bytes" | |
"fmt" | |
"strings" | |
"testing" | |
) | |
func BenchmarkBytesBufferString(b *testing.B) { | |
for _, n := range []int{10, 50, 100, 200, 500} { | |
b.Run(fmt.Sprintf("%d", n), func(b *testing.B) { | |
for i := 0; i < b.N; i++ { | |
b.StopTimer() | |
b.StartTimer() | |
var buf bytes.Buffer | |
for i := 0; i < 10; i++ { | |
buf.WriteString("sample\n") | |
} | |
for i := 0; i < 10; i++ { | |
buf.WriteString("sample\n") | |
} | |
for i := 0; i < n; i++ { | |
_ = buf.String() | |
} | |
} | |
}) | |
} | |
} | |
func BenchmarkStringsBuilderString(b *testing.B) { | |
for _, n := range []int{10, 50, 100, 200, 500} { | |
b.Run(fmt.Sprintf("%d", n), func(b *testing.B) { | |
for i := 0; i < b.N; i++ { | |
b.StopTimer() | |
b.StartTimer() | |
var buf strings.Builder | |
for i := 0; i < 10; i++ { | |
buf.WriteString("sample\n") | |
} | |
for i := 0; i < n; i++ { | |
_ = buf.String() | |
} | |
} | |
}) | |
} | |
} | |
func BenchmarkBytesBufferWriteString(b *testing.B) { | |
for _, n := range []int{10, 50, 100, 200, 500} { | |
b.Run(fmt.Sprintf("%d", n), func(b *testing.B) { | |
for i := 0; i < b.N; i++ { | |
b.StopTimer() | |
b.StartTimer() | |
var buf bytes.Buffer | |
for i := 0; i < n; i++ { | |
buf.WriteString("sample\n") | |
} | |
_ = buf.String() | |
} | |
}) | |
} | |
} | |
func BenchmarkStringsBuilderWriteString(b *testing.B) { | |
for _, n := range []int{10, 50, 100, 200, 500} { | |
b.Run(fmt.Sprintf("%d", n), func(b *testing.B) { | |
for i := 0; i < b.N; i++ { | |
b.StopTimer() | |
b.StartTimer() | |
var buf strings.Builder | |
for i := 0; i < n; i++ { | |
buf.WriteString("sample\n") | |
} | |
_ = buf.String() | |
} | |
}) | |
} | |
} | |
func BenchmarkGrownBytesBufferWriteString(b *testing.B) { | |
for _, n := range []int{10, 50, 100, 200, 500} { | |
b.Run(fmt.Sprintf("%d", n), func(b *testing.B) { | |
for i := 0; i < b.N; i++ { | |
b.StopTimer() | |
b.StartTimer() | |
var buf bytes.Buffer | |
buf.Grow(n * 6) | |
for i := 0; i < n; i++ { | |
buf.WriteString("sample\n") | |
} | |
_ = buf.String() | |
} | |
}) | |
} | |
} | |
func BenchmarkGrownStringsBuilderWriteString(b *testing.B) { | |
for _, n := range []int{10, 50, 100, 200, 500} { | |
b.Run(fmt.Sprintf("%d", n), func(b *testing.B) { | |
for i := 0; i < b.N; i++ { | |
b.StopTimer() | |
b.StartTimer() | |
var buf strings.Builder | |
buf.Grow(n * 6) | |
for i := 0; i < n; i++ { | |
buf.WriteString("sample\n") | |
} | |
_ = buf.String() | |
} | |
}) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment