Go42 icon indicating copy to clipboard operation
Go42 copied to clipboard

第十章关于strings.Join和strings.Builder效率比较的问题

Open miranquil opened this issue 4 years ago • 0 comments

参考源码,Join本身就是调用了套了一个Builder来存新字符串,所以这两个效率应该是一样的? go1.15.2 darwin/amd6

func Join(elems []string, sep string) string {
	switch len(elems) {
	case 0:
		return ""
	case 1:
		return elems[0]
	}
	n := len(sep) * (len(elems) - 1)
	for i := 0; i < len(elems); i++ {
		n += len(elems[i])
	}

	var b Builder
	b.Grow(n)
	b.WriteString(elems[0])
	for _, s := range elems[1:] {
		b.WriteString(sep)
		b.WriteString(s)
	}
	return b.String()
}

~~另外似乎strings.Builder是个改写版的迷你bytes.Buffer?~~

miranquil avatar Oct 12 '20 09:10 miranquil