基于Go Int转string几种方式性能测试


Posted in Golang onApril 28, 2021

Go语言内置int转string至少有3种方式:

fmt.Sprintf("%d",n)
strconv.Itoa(n)
strconv.FormatInt(n,10)

下面针对这3中方式的性能做一下简单的测试:

package gotest
import (
	"fmt"
	"strconv"
	"testing"
)
func BenchmarkSprintf(b *testing.B) {
	n := 10
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		fmt.Sprintf("%d", n)
	}
}
func BenchmarkItoa(b *testing.B) {
	n := 10
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		strconv.Itoa(n)
	}
}
func BenchmarkFormatInt(b *testing.B) {
	n := int64(10)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		strconv.FormatInt(n, 10)
	}
}

保存文件为int2string_test.go

执行:

go test -v -bench=. int2string_test.go -benchmem
goos: darwin
goarch: amd64
BenchmarkSprintf-8      20000000               114 ns/op              16 B/op          2 allocs/op
BenchmarkItoa-8         200000000                6.33 ns/op            0 B/op          0 allocs/op
BenchmarkFormatInt-8    300000000                4.10 ns/op            0 B/op          0 allocs/op
PASS
ok      command-line-arguments  5.998s

总体来说,strconv.FormatInt()效率最高,fmt.Sprintf()效率最低

补充:Golang类型转换, 整型转换成字符串,字符串转换成整型

看代码吧~

package main
 
import (
 "fmt"
 "reflect"
 "strconv"
)
 
func main() {
 //字符串转成整型int
 num,err:=strconv.Atoi("123")
 if err!=nil {
  panic(err)
 }
 fmt.Println(num,reflect.TypeOf(num))
 
 //整型转换成字符串
 str:=strconv.Itoa(123)
 fmt.Println(str,reflect.TypeOf(str))
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Golang 相关文章推荐
解决Go gorm踩过的坑
Apr 30 Golang
golang 实现Location跳转方式
May 02 Golang
golang elasticsearch Client的使用详解
May 05 Golang
Golang表示枚举类型的详细讲解
Sep 04 Golang
Golang中channel的原理解读(推荐)
Oct 16 Golang
golang为什么要统一错误处理
Apr 03 Golang
Golang原生rpc(rpc服务端源码解读)
Apr 07 Golang
GO语言异常处理分析 err接口及defer延迟
Apr 14 Golang
Golang获取List列表元素的四种方式
Apr 20 Golang
Golang jwt身份认证
Apr 20 Golang
Go gRPC进阶教程gRPC转换HTTP
Jun 16 Golang
GoFrame框架数据校验之校验结果Error接口对象
Jun 21 Golang
Go语言中break label与goto label的区别
golang 如何用反射reflect操作结构体
Apr 28 #Golang
golang 生成对应的数据表struct定义操作
Apr 28 #Golang
golang 如何通过反射创建新对象
Apr 28 #Golang
golang 实现两个结构体复制字段
Apr 28 #Golang
go结构体嵌套的切片数组操作
Apr 28 #Golang
golang json数组拼接的实例
Apr 28 #Golang
You might like
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
php图片缩放实现方法
2014/02/20 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
js实现图片漂浮效果的方法
2015/03/02 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
python 并发下载器实现方法示例
2019/11/22 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
信用社实习人员自我鉴定
2013/09/20 职场文书
工程项目经理岗位职责
2013/12/15 职场文书
个人实习生的自我评价
2014/02/16 职场文书
货车司机岗位职责
2014/03/18 职场文书
公关活动策划方案
2014/05/25 职场文书
迎新生标语大全
2014/10/06 职场文书
高中教师个人总结
2015/02/10 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫