美文网首页
go 字符串拼接性能比较

go 字符串拼接性能比较

作者: xiaomeng79 | 来源:发表于2018-07-10 15:16 被阅读0次

比较fmt.Sprintf strings.Join + 重复申明bytes.Buffer 一次申明bytes.Buffer

package main

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

var (
    s = "我的加载中国号多少空间哈市的付款计划的时间恢复健咖啡哈市的饭卡号发空间按多少宇航员"
    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+"]"
    }
}

//每次申明一个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  //每次申明一个buffer
BenchmarkBFN-8     10000000      164 ns/op    144 B/op     1 allocs/op  //只声明一次buffer,每次重置
PASS


结论:如果字符串少的情况下,综合耗时,使用内存,对象分配,操作便利性方面,+更胜一筹

相关文章

  • go语言string之Buffer与Builder

    操作字符串离不开字符串的拼接,但是Go中string是只读类型,大量字符串的拼接会造成性能问题。 字符串拼接的方式...

  • go 字符串拼接性能比较

    比较fmt.Sprintf strings.Join + 重复申明bytes.Buffer 一次申明byte...

  • 字符串

    一、字符串格式化 String.format()的使用 二、字符串拼接 字符串拼接性能比较 三、日志打印效率 使用...

  • 2019-06-23

    go 字符串操作性能 浅析 go 性能分析 性能分析函数

  • Go语言:字符串数组 拼接成 字符串

    代码实例: 相关文章: Go语言:字符串数组 拼接成 字符串 Go语言:字符串 分割成 字符串数组

  • Go语言:字符串 分割成 字符串数组

    代码实例: 相关文章: Go语言:字符串数组 拼接成 字符串 Go语言:字符串 分割成 字符串数组

  • 日志、字符串拼接

    关于字符串拼接效率: 单词调用字符串拼接性能 + > strings.Join > bytes.Buffer > ...

  • Golang 字符串拼接

    字符串拼接应该在编程过程中比较常用的操作了,在Go语言中对字符串的拼接有多种处理方式,以下通过实例来一一讲解 +号...

  • go字符串拼接与性能分析

    字符串拼接在golang中是非常常见的操作,本文介绍几种常用方法并分析各种方法的效率. 拼接 + 号拼接 + 号拼...

  • Go语言 字符串拼接性能优化

    今天在查找Go资料的时候,偶然中在点进看云中的《Go入门指南》这本书,简单的看了下书中的内容,然后看到有一节内容是...

网友评论

      本文标题:go 字符串拼接性能比较

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