Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ca5d58c

Browse files
4.2 非行内拼接字符串推荐使用 strings.Builder
1 parent d2b6139 commit ca5d58c

File tree

3 files changed

+63
-0
lines changed

3 files changed

+63
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package datastructure
2+
3+
import (
4+
"bytes"
5+
"strings"
6+
"testing"
7+
)
8+
9+
func BenchmarkJoinStrWithStringsJoin(b *testing.B) {
10+
s1, s2, s3 := "foo", "bar", "baz"
11+
for i := 0; i < b.N; i++ {
12+
_ = strings.Join([]string{s1, s2, s3}, "")
13+
}
14+
}
15+
16+
func BenchmarkJoinStrWithStringsBuilder(b *testing.B) {
17+
s1, s2, s3 := "foo", "bar", "baz"
18+
for i := 0; i < b.N; i++ {
19+
var builder strings.Builder
20+
_, _ = builder.WriteString(s1)
21+
_, _ = builder.WriteString(s2)
22+
_, _ = builder.WriteString(s3)
23+
}
24+
}
25+
26+
func BenchmarkJoinStrWithBytesBuffer(b *testing.B) {
27+
s1, s2, s3 := "foo", "bar", "baz"
28+
for i := 0; i < b.N; i++ {
29+
var buffer bytes.Buffer
30+
_, _ = buffer.WriteString(s1)
31+
_, _ = buffer.WriteString(s2)
32+
_, _ = buffer.WriteString(s3)
33+
}
34+
}
35+
36+
func BenchmarkJoinStrWithByteSlice(b *testing.B) {
37+
s1, s2, s3 := "foo", "bar", "baz"
38+
for i := 0; i < b.N; i++ {
39+
var bys []byte
40+
bys = append(bys, s1...)
41+
bys = append(bys, s2...)
42+
_ = append(bys, s3...)
43+
}
44+
}
45+
46+
func BenchmarkJoinStrWithByteSlicePreAlloc(b *testing.B) {
47+
s1, s2, s3 := "foo", "bar", "baz"
48+
for i := 0; i < b.N; i++ {
49+
bys := make([]byte, 0, 9)
50+
bys = append(bys, s1...)
51+
bys = append(bys, s2...)
52+
_ = append(bys, s3...)
53+
}
54+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
![carbon](https://raw.githubusercontent.com/boatrainlsz/my-image-hosting/main/202203192129639.svg)

‎performance_rule/readme.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,11 @@ cpu: AMD Ryzen 5 4600U with Radeon Graphics
6161
| 代码 | 验证结果 |
6262
| -------------------------------------------------- | -------------------------------------------------- |
6363
| [join_str_test.go](datastructure/join_str_test.go) | [join_str_test.md](datastructure/join_str_test.md) |
64+
65+
#### 4.2 非行内拼接字符串推荐使用 strings.Builder
66+
67+
| 代码 | 验证结果 |
68+
| ------------------------------------------------------------ | ------------------------------------------------------------ |
69+
| [str_join_builder_buffer_byte_test.go](datastructure/str_join_builder_buffer_byte_test.go) | [str_join_builder_buffer_byte_test.md](datastructure/str_join_builder_buffer_byte_test.md) |
70+
71+
####

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /