分享
  1. 首页
  2. 文章

Golang字符串拼接效率

jachin · · 3572 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

package main
import (
	"bytes"
	"strings"
	"testing"
)
var strLen int = 1000
func BenchmarkConcatString(b *testing.B) {
	var str string
	i := 0
	b.ResetTimer()
	for n :=0; n< b.N; n++ {
		str += "X"
		i++
		if i >= strLen {
			i = 0
			str = ""
		}
	}
}
func BenchmarkConcatBuffer(b *testing.B) {
	var buffer bytes.Buffer
	i := 0
	b.ResetTimer()
	for n := 0; n < b.N; n++ {
		buffer.WriteString("X")
		i++
		if i >= strLen {
			i = 0
			buffer = bytes.Buffer{}
		}
	}
}
func BenchmarkConcatBuilder(b *testing.B) {
	var builder strings.Builder
	i := 0
	b.ResetTimer()
	for n := 0; i < b.N; n++ {
		builder.WriteString("X")
		i++
		if i > strLen {
			i = 0
			builder = strings.Builder{}
		}
	}
} 
bash: go test -bench=. -test.benchmem
goos: darwin
goarch: amd64
pkg: benchmark
BenchmarkConcatString-4 10000000 169 ns/op 530 B/op 0 allocs/op
BenchmarkConcatBuffer-4 100000000 11.7 ns/op 2 B/op 0 allocs/op
BenchmarkConcatBuilder-4 100000000 13.1 ns/op 2 B/op 0 allocs/op
PASS
ok benchmark 4.416s

help:

 -test.bench regexp
 run only benchmarks matching regexp
 -test.benchmem
 print memory allocations for benchmarks
 -test.benchtime d
 run each benchmark for duration d (default 1s)
 -test.blockprofile file
 write a goroutine blocking profile to file
 -test.blockprofilerate rate
 set blocking profile rate (see runtime.SetBlockProfileRate) (default 1)
 -test.count n
 run tests and benchmarks n times (default 1)
 -test.coverprofile file
 write a coverage profile to file
 -test.cpu list
 comma-separated list of cpu counts to run each test with
 -test.cpuprofile file
 write a cpu profile to file
 -test.failfast
 do not start new tests after the first test failure
 -test.list regexp
 list tests, examples, and benchmarks matching regexp then exit
 -test.memprofile file
 write a memory profile to file
 -test.memprofilerate rate
 set memory profiling rate (see runtime.MemProfileRate)
 -test.mutexprofile string
 write a mutex contention profile to the named file after execution
 -test.mutexprofilefraction int
 if >= 0, calls runtime.SetMutexProfileFraction() (default 1)
 -test.outputdir dir
 write profiles to dir
 -test.parallel n
 run at most n tests in parallel (default 4)
 -test.run regexp
 run only tests and examples matching regexp
 -test.short
 run smaller test suite to save time
 -test.testlogfile file
 write test action log to file (for use only by cmd/go)
 -test.timeout d
 panic test binary after duration d (default 0, timeout disabled)
 -test.trace file
 write an execution trace to file
 -test.v
 verbose: print additional output

有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:jachin

查看原文:Golang字符串拼接效率

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
3572 次点击
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏