go 字符串拼接性能比較

比較fmt.Sprintf strings.Join + 重復(fù)申明bytes.Buffer 一次申明bytes.Buffer

package main

import (
    "testing"
    "strings"
    "bytes"
    "fmt"
)

var (
    s = "我的加載中國(guó)號(hào)多少空間哈市的付款計(jì)劃的時(shí)間恢復(fù)健咖啡哈市的飯卡號(hào)發(fā)空間按多少宇航員"
    sub = "宇航員"
    //s = "abcdrfghidhsdh2jkhsdkjfs"
    //sub = "2j"
    _s = []string{s,"[",sub,"]"}
    buf = bytes.Buffer{}
)

//fmt.Sprintf
func BenchmarkS(b *testing.B) {
    b.ReportAllocs()
    for i:=0;i<b.N;i++ {
        fmt.Sprintf("%s[%s]",s,sub)
    }
}

//strings.Join
func BenchmarkJ(b *testing.B) {
    b.ReportAllocs()
    for i:=0;i<b.N;i++ {
        strings.Join(_s,"")
    }
}

//+
func BenchmarkSJ(b *testing.B) {
    b.ReportAllocs()
    for i:=0;i<b.N;i++ {
        _ =s + "[" + sub+"]"
    }
}

//每次申明一個(gè)buffer
func BenchmarkBF(b *testing.B) {
    b.ReportAllocs()
    for i:=0;i<b.N;i++ {
        b := bytes.Buffer{}
        b.WriteString(s)
        b.WriteString("[")
        b.WriteString(sub)
        b.WriteString("]")
        b.String()
    }
}

//只聲明一次,每次重置
func BenchmarkBFN(b *testing.B) {
    b.ReportAllocs()
    for i:=0;i<b.N;i++ {
        buf.Reset()
        buf.WriteString(s)
        buf.WriteString("[")
        buf.WriteString(sub)
        buf.WriteString("]")
        buf.String()
    }
}

性能

goos: linux
goarch: amd64
BenchmarkS-8        5000000      368 ns/op    176 B/op     3 allocs/op  //fmt.Sprintf
BenchmarkJ-8        5000000      250 ns/op    288 B/op     2 allocs/op  //strings.Join
BenchmarkSJ-8      10000000      152 ns/op    144 B/op     1 allocs/op  //+
BenchmarkBF-8       2000000      707 ns/op    640 B/op     4 allocs/op  //每次申明一個(gè)buffer
BenchmarkBFN-8     10000000      164 ns/op    144 B/op     1 allocs/op  //只聲明一次buffer,每次重置
PASS


結(jié)論:如果字符串少的情況下狐史,綜合耗時(shí)罢低,使用內(nèi)存,對(duì)象分配媳禁,操作便利性方面眠副,+更勝一籌

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市竣稽,隨后出現(xiàn)的幾起案子囱怕,更是在濱河造成了極大的恐慌,老刑警劉巖毫别,帶你破解...
    沈念sama閱讀 212,332評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娃弓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拧烦,警方通過(guò)查閱死者的電腦和手機(jī)忘闻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)恋博,“玉大人齐佳,你說(shuō)我怎么就攤上這事≌冢” “怎么了炼吴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,812評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)疫衩。 經(jīng)常有香客問(wèn)我硅蹦,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,607評(píng)論 1 284
  • 正文 為了忘掉前任童芹,我火速辦了婚禮涮瞻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘假褪。我一直安慰自己署咽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,728評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布生音。 她就那樣靜靜地躺著宁否,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缀遍。 梳的紋絲不亂的頭發(fā)上慕匠,一...
    開(kāi)封第一講書(shū)人閱讀 49,919評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音域醇,去河邊找鬼台谊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛歹苦,可吹牛的內(nèi)容都是我干的青伤。 我是一名探鬼主播,決...
    沈念sama閱讀 39,071評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼殴瘦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼狠角!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蚪腋,我...
    開(kāi)封第一講書(shū)人閱讀 37,802評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤丰歌,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后屉凯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體立帖,經(jīng)...
    沈念sama閱讀 44,256評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,576評(píng)論 2 327
  • 正文 我和宋清朗相戀三年悠砚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晓勇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,712評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡灌旧,死狀恐怖绑咱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情枢泰,我是刑警寧澤描融,帶...
    沈念sama閱讀 34,389評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站衡蚂,受9級(jí)特大地震影響窿克,放射性物質(zhì)發(fā)生泄漏骏庸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,032評(píng)論 3 316
  • 文/蒙蒙 一年叮、第九天 我趴在偏房一處隱蔽的房頂上張望具被。 院中可真熱鬧,春花似錦只损、人聲如沸硬猫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至坑雅,卻和暖如春辈挂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背裹粤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工终蒂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遥诉。 一個(gè)月前我還...
    沈念sama閱讀 46,473評(píng)論 2 360
  • 正文 我出身青樓拇泣,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親矮锈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霉翔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,606評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容