go拼接字符串不如php,golang各种字符串拼接性能对比

golang中字符串拼接方法

+=

fmt.sprintf

append

buffer.WriteString

copy

废话不多说,直接上代码看效果

package main

import (

"bytes"

"fmt"

"time"

)

func main() {

str:="chinese"

city:="beijing"

// 1. +=

s:=time.Now()

for i:=0;i<100000;i++ {

str +=city

}

e:=time.Since(s)

fmt.Println("time cost 1:", e)

// 2. fmt.Sprintf

str="chinese"

city="beijing"

s=time.Now()

for i:=0;i<100000;i++ {

str = fmt.Sprintf("%s%s",str,city)

}

e=time.Since(s)

fmt.Println("time cost 2:", e)

//3. buffer.WriteString

str="chinese"

city="beijing"

s=time.Now()

var buf= bytes.Buffer{}

buf.WriteString(str)

for i:=0;i<100000;i++ {

buf.WriteString(city)

}

e=time.Since(s)

fmt.Println("time cost 3:", e)

//4. append

str="chinese"

city="beijing"

s=time.Now()

bstr:=[]byte(str)

bcity:=[]byte(city)

for i:=0;i<100000;i++ {

bstr= append(bstr, bcity...)

}

e=time.Since(s)

fmt.Println("time cost 4:", e)

// 5. copy

str="chinese"

city="beijing"

s=time.Now()

zstr :=[]byte(str)

for i:=0;i<100000;i++ {

copy(zstr, city)

}

e=time.Since(s)

fmt.Println("time cost 5:", e)

}

最终效果(多次尝试,对比结果都一致):

time cost 1: 3.176250251s

time cost 2: 5.347827717s

time cost 3: 1.051104ms

time cost 4: 769.258µs

time cost 5: 323.968µs

效率:copy > append > buf.WriteString > += > fmt.Sprintf

所以请慎用fmt.Sprinf 和 +=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值