美文网首页
go字符串性能

go字符串性能

作者: 木工007 | 来源:发表于2019-10-31 20:02 被阅读0次

    GO字符串拼接

        1)  +运算符

        2)fmt.Sprintf函数

        3) bytes.Buffer

        4) strings.Builder

        5) strings.Join函数

    GO基准测试

        1) 测试文件以_test结尾(与单测在同一个文件)

        2) 测试函数以Benchmark开头,参数为*testing.B

        3) 测试函数体放在for循环中,循环次数以b.N指定

    字符串函数对比

    测试程序

    字符串拼接函数 字符串拼接基准测试函数

    测试结果

    测试命令01
    go test -bench=. -benchtime=1s

    测试结果01
    goos: linux

    goarch: amd64

    BenchmarkAddString-8                  50   20644142 ns/op

    BenchmarkAddStringByBuffer-8      20000     75864 ns/op

    BenchmarkAddStringByFmt-8            50   26507075 ns/op

    BenchmarkAddStringByBuilder-8    10000     106980 ns/op

    PASS

    ok  _/home/GOProject/opt 5.796s

    测试命令02

    go test -bench=. -benchtime=30s

    测试结果02

    goos: linux

    goarch: amd64

    BenchmarkAddString-8            10000000       6958 ns/op

    BenchmarkAddStringByBuffer-8    50000000       1137 ns/op

    BenchmarkAddStringByFmt-8      3000000     14990 ns/op

    BenchmarkAddStringByBuilder-8  30000000       1251 ns/op

    结论

    从测试结果看字符串拼接函数性能:bytes.Buffer > strings.Builder > + >fmt.Sprintf

    字符串是不可变对象,字符串+操作会产生新的字符串对象。频繁的字符串拼接可以用bytes.Buffer来实现。

    相关文章

      网友评论

          本文标题:go字符串性能

          本文链接:https://www.haomeiwen.com/subject/rcsavctx.html