高效地拼接字符串- go

对比结果:

1
2
3
4
5
6
7
BenchmarkAdd-4                36          31375864 ns/op        215482269 B/op     10005 allocs/op
BenchmarkFmt-4                37          29228970 ns/op        159060782 B/op     30145 allocs/op
BenchmarkJoin-4            15288             77334 ns/op           40960 B/op          1 allocs/op
BenchmarkBuffer-4          18453             65148 ns/op           98240 B/op         11 allocs/op
BenchmarkBuild-4           18283             63780 ns/op          154360 B/op         20 allocs/op
PASS
ok      string  10.122s   

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package main
 
import (
    "bytes"
    "fmt"
    "strings"
)
 
var stringArray []string
 
func main() {
    // s := AddMethd()
    s := fmtMethod()
    fmt.Printf("%v\n", s)
}
 
func init() {
    setString(10000, "ABC")
}
 
func setString(n int, s string) {
    fmt.Println("执行初始化字符串数组")
    for i := 0; i <= n; i++ {
        stringArray = append(stringArray, s)
 
    }
}
 
func AddMethd() (s string) {
    for _, v := range stringArray {
        s += v + ","
    }
    return
}
 
func fmtMethod() (s string) {
 
    for _, v := range stringArray {
        s = fmt.Sprintf("%s%s", s, v)
    }
 
    return
}
 
func joinMethod() (s string) {
    s = strings.Join(stringArray, ",")
    return
}
 
func bufferMethod() (s string) {
    var b bytes.Buffer
    for _, v := range stringArray {
        b.WriteString(v)
    }
    s = b.String()
    return
}
 
func builderMethod() (s string) {
    var b strings.Builder
    for _, v := range stringArray {
        b.WriteString(v)
    }
    s = b.String()
    return
}

  

posted @   风在何方  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示