文档章节

[UMU 学 golang](8) strings.Builder vs bytes.Buffer

UMU
 UMU
发布于 2018/04/02 18:47
字数 160
阅读 49
收藏 0

先说优点

  • strings.Builder:省内存
  • bytes.Buffer:快

性能测试程序

package benchmark_test

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

var (
	ss = "1234567890abcdefghijklmnopqrstuvwxyz"
	bs = []byte(ss)
	rn = 'a'
	bt = byte('a')
)

func BenchmarkBuilderWrite(b *testing.B) {
	var builder strings.Builder
	for i := 0; i < b.N; i++ {
		builder.Write(bs)
	}
}

func BenchmarkBuiderWriteByte(b *testing.B) {
	var builder strings.Builder
	for i := 0; i < b.N; i++ {
		builder.WriteByte(bt)
	}
}

func BenchmarkBuilderWriteRune(b *testing.B) {
	var builder strings.Builder
	for i := 0; i < b.N; i++ {
		builder.WriteRune(rn)
	}
}

func BenchmarkBuilderWriteString(b *testing.B) {
	var builder strings.Builder
	for i := 0; i < b.N; i++ {
		builder.WriteString(ss)
	}
}

func BenchmarkBufferWrite(b *testing.B) {
	var buffer bytes.Buffer
	for i := 0; i < b.N; i++ {
		buffer.Write(bs)
	}
}

func BenchmarkBufferWriteByte(b *testing.B) {
	var buffer bytes.Buffer
	for i := 0; i < b.N; i++ {
		buffer.WriteByte(bt)
	}
}

func BenchmarkBufferWriteRune(b *testing.B) {
	var buffer bytes.Buffer
	for i := 0; i < b.N; i++ {
		buffer.WriteRune(rn)
	}
}

func BenchmarkBufferWriteString(b *testing.B) {
	var buffer bytes.Buffer
	for i := 0; i < b.N; i++ {
		buffer.WriteString(ss)
	}
}

© 著作权归作者所有

UMU

UMU

粉丝 120
博文 112
码字总数 44043
作品 0
厦门
程序员
私信 提问
[UMU 学 golang](1) Hello code!

  一直玩 WSH,被说逼格跟不上时代,又据说 go 即将发布的 1.5 版解决了 GC stop-the-world 问题了,所以 UMU 打算以后用它来开发工具。   最近想统计代码行数,以前用 VBS 写的一时间居...

UMU
2015/08/19
0
1
[UMU WSH 教程终结篇](48) FSO 应用实例 - 批量重命名 WP 视频

UMU WSH Git:http://git.oschina.net/umu618/umu-wsh/ 本篇为 UMU WSH 教程终结篇,以后更倾向使用 Windows PowerShell 和 golang 来编写工具。 早期 WP 拍摄的视频,命名格式为 WPYYYYMMDD...

UMU
2016/02/02
100
0
[UMU 学 golang](4) 简单的 AWS S3 客户端

  公司搞了一套兼容 Amazon S3 的云存储系统,用 C++ 写客户端很蛋疼,UMU 决定还是用 go 来写一个。   首先找到一个靠谱的开源项目,运行以下命令安装: go get github.com/mitchellh/...

UMU
2015/09/24
394
3
Go圣经-学习笔记之基础数据类型

上一篇 Go圣经-学习笔记之程序结构(二) 下一篇 Go圣经-临时插入ORM的小trick 前言 Go语言的数据类型分为四类:、、和。其中 基础类型,包括:, 、 , , 等 复合类型,包括:、。它们由一个或者...

cdh0805010
2017/10/22
0
0
[UMU WSH 教程](42) FSO 应用实例 - 批量删除文件

UMU WSH 教程 利用 WinHttp.WinHttpRequest.5.1 对象下载文件 UMU WSH 教程代码下载:http://sdrv.ms/ZpPPaS UMU WSH Git:http://git.oschina.net/umu618/umu-wsh   使用 VS 的程序员应该......

UMU
2012/10/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

kotlin中奖概率

fun main() { var wins = 0 var chance = 0.2 var playTime = 10// 1000万次 val n = 10000000 (1..n).forEach { if (play(chance, playTime)) win......

oschina4cyy
15分钟前
0
0
第十一讲:爬取猫眼网站上的前100名电影

本次我们来通过翻页爬取的方式爬取猫眼电影里面推荐的前100名电影,并存储到数据库。 1、我们登录猫眼,看下我们的数据在哪里 然后点击今日TOP100,看下具体的网页数据 最下面我们看到底部有...

刘日辉
15分钟前
12
0
git 设置全局用户名/邮箱和某个项目用户名/邮箱/密码

一、特定项目设置用户名/邮箱/密码的方法 找到项目所在目录下的 .git,进入.git文件夹,然后执行如下命令分别设置用户名和邮箱 git config user.name "dawn.he" git config user.email "1...

hexiaoming123
15分钟前
0
0
好程序员分享Linux重器vi编辑器

创建练习文件 [root@tianyun ~]# ll -a > list.txt 文件编辑器 gedit 文件编辑器 vi, vim, nano vi编辑器工作模式 命令模式: a. 光标定位 hjkl 0 $ gg G 3G 进入第三行 /string (n N 可以循...

好程序员IT
17分钟前
2
0
Git整理(五) git cherry-pick的使用

概述 git cherry-pick可以理解为”挑拣”提交,它会获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。 当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行...

嘿嘿嘿IT
24分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部