Исходники и презентации
This commit is contained in:
38
lessons/strings/string_builder/speed_test.go
Normal file
38
lessons/strings/string_builder/speed_test.go
Normal file
@ -0,0 +1,38 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// go test -bench=. speed_test.go
|
||||
|
||||
func BenchmarkSimpleConcatenation(b *testing.B) {
|
||||
str := "test"
|
||||
for i := 0; i < b.N; i++ {
|
||||
str += "test"
|
||||
}
|
||||
|
||||
_ = str
|
||||
}
|
||||
|
||||
func BenchmarkConcatenationWithStringBuilder(b *testing.B) {
|
||||
builder := strings.Builder{}
|
||||
builder.WriteString("test")
|
||||
for i := 0; i < b.N; i++ {
|
||||
builder.WriteString("test")
|
||||
}
|
||||
|
||||
_ = builder.String()
|
||||
}
|
||||
|
||||
func BenchmarkConcatenationWithStringBuilderOptimized(b *testing.B) {
|
||||
builder := strings.Builder{}
|
||||
builder.Grow(4 + b.N*4)
|
||||
builder.WriteString("test")
|
||||
for i := 0; i < b.N; i++ {
|
||||
builder.WriteString("test")
|
||||
}
|
||||
|
||||
_ = builder.String()
|
||||
}
|
||||
Reference in New Issue
Block a user