基于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 相关文章推荐
Golang 正则匹配效率详解
Apr 25 Golang
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
May 05 Golang
go语言中GOPATH GOROOT的作用和设置方式
May 05 Golang
Golang之sync.Pool使用详解
May 06 Golang
go mod 安装依赖 unkown revision问题的解决方案
May 06 Golang
Go语言设计模式之结构型模式
Jun 22 Golang
Go 语言结构实例分析
Jul 04 Golang
Go 中的空白标识符下划线
Mar 25 Golang
Go归并排序算法的实现方法
Apr 06 Golang
Golang MatrixOne使用介绍和汇编语法
Apr 19 Golang
Golang解析JSON对象
Apr 30 Golang
详解Go语言中配置文件使用与日志配置
Jun 01 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 setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
PDO::rollBack讲解
2019/01/29 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
php使用递归与迭代实现快速排序示例
2014/01/23 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
Python reduce()函数的用法小结
2017/11/15 Python
Python之reload流程实例代码解析
2018/01/29 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
python getopt模块使用实例解析
2019/12/18 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
python 实现aes256加密
2020/11/27 Python
英国领先的办公用品供应商:Viking
2016/08/01 全球购物
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
Skyscanner台湾:全球知名的旅行比价引擎
2018/07/01 全球购物
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
瞿秋白纪念馆观后感
2015/06/10 职场文书
法定代表人身份证明书
2015/06/18 职场文书
如何写好竞聘报告
2019/04/03 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
纯html+css实现Element loading效果
2021/08/02 HTML / CSS
使用HBuilder制作一个简单的HTML5网页
2022/07/07 HTML / CSS