基于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语言-在mac下brew升级golang
Apr 25 Golang
golang中的空slice案例
Apr 27 Golang
golang 生成对应的数据表struct定义操作
Apr 28 Golang
golang 实现并发求和
May 08 Golang
Golang全局变量加锁的问题解决
May 08 Golang
Golang并发操作中常见的读写锁详析
Aug 30 Golang
Go语言并发编程 sync.Once
Oct 16 Golang
victoriaMetrics库布隆过滤器初始化及使用详解
Apr 05 Golang
Go语言怎么使用变长参数函数
Jul 15 Golang
在ubuntu下安装go开发环境的全过程
Aug 05 Golang
基于Python实现西西成语接龙小助手
Aug 05 Golang
Go中使用gjson来操作JSON数据的实现
Aug 14 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
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
浅谈PHP中的
2016/04/23 PHP
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
jquery实现从数组移除指定的值
2015/06/24 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
jquery实现表单获取短信验证码代码
2017/03/13 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
python三引号输出方法
2019/02/27 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
Python requests模块session代码实例
2020/04/14 Python
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
大学生优秀团员事迹材料
2014/01/30 职场文书
公司总经理岗位职责
2014/03/15 职场文书
企业法人授权委托书
2014/04/03 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
纪委立案决定书
2015/06/24 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
mysql字符串截取函数小结
2021/04/05 MySQL
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL
Python使用Kubernetes API访问集群
2021/05/30 Python
js 数组 fill() 填充方法
2021/11/02 Javascript
Python集合set()使用的方法详解
2022/03/18 Python