天天看點

Go語言 字元串拼接性能優化

今天在查找Go資料的時候,偶然中在點進看雲中的《Go入門指南》這本書,簡單的看了下書中的内容,然後看到有一節内容是描述 “誤用字元串”的一個小節,從中了解到go中字元串拼接如果直接用 + 進行拼接的話,效率會比較低,當在for循環次數比較多的時候比較明顯,然後我就測試了。那邊書中上提供的是用另外一種方式,在for循環次數比較多的時候,比較适合。然後我就寫代碼進行簡單測試對比了下,兩者的效率比較大。

(1)這是直接用 + 拼接字元串,for執行100000的結果:

package main

import (
    "fmt"
    "time"
)

func main() {
    var s string
    bT := time.Now()
    for i := 0; i < 100000; i++ {
        s += "1"
    }
    eT := time.Since(bT)
    fmt.Println("Run time: ", eT)
}

// Run time:  1.1867993s
           

(2)這是用另一種方式進行for,100000的結果:

package main

import (
    "bytes"
    "fmt"
    "time"
)

func main() {
    var b bytes.Buffer
    bT := time.Now()
    for i := 0; i < 100000; i++ {
        b.WriteString("1")
    }
    eT := time.Since(bT)
    fmt.Println("Run time: ", eT)
}

// Run time:  2.0005ms
           

發現兩者的差距比較明顯